您好我有一个使用 AJAX 的自定义 js 自动完成组件,该组件使用包含表格的 div 来显示匹配值。
在带有 DOCTYPE 声明的 IE9 中使用它时,不会出现 div。
奇怪的想法是,如果我在页面中有另一个组件实例,一切正常(我在表中有这些组件并动态添加新行;如果表一开始是空的,我有问题,否则我可以添加包含组件新实例的新行,一切正常)。
该代码在 Firefox 和 chrome 中运行良好。
如果我指定,它在 ie9 中也可以正常工作
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="X-UA-Compatible" content="IE=8" />
我已经调试并且设置div可见的javascript被执行为no avil:
this.resultTable.innerHTML=responseText;
this.resultTable.style.top=getY(this.editField)+22;
this.resultTable.style.left=getX(this.editField);
this.resultTable.style.zIndex="1";
this.resultTable.style.visibility='visible';
如果我调整窗口大小,div 会神奇地出现。
提前感谢您的回复。
编辑:
我找到了一个解决方案(感谢 epascarello 提示)。
我已经添加了
window.resizeBy(1,1);
window.resizeBy(-1,-1);
这几乎解决了,因为我的页面处于 100% w/h 的 iframe 中;唯一剩下的问题是最大化和恢复浏览器窗口会导致 iframe 中出现不必要的滚动条;我解决了它添加
getFrameForDocument(document).style.width='100%';
getFrameForDocument(document).style.height='100%';
在获取对父 IFRAME 的引用时找到 getFrameForDocument并且是
function getFrameForDocument(document) {
var w= document.defaultView || document.parentWindow;
var frames= w.parent.document.getElementsByTagName('iframe');
for (var i= frames.length; i-->0;) {
var frame= frames[i];
try {
var d= frame.contentDocument || frame.contentWindow.document;
if (d===document)
return frame;
} catch(e) {}
}
}