0

您好我有一个使用 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) {}
    }
}
4

0 回答 0