IE9标准模式、IFrame和DOM操作

4
IE9(标准模式)不允许您在DOM中操作iframe。 如果您使用jQueryUI Dialog或jQuery的.wrap()函数包装刚好包含iframe的内容,IE9会崩溃。 实际上,您甚至不需要jQuery,普通的JS也可以正常工作(见下文)。
我想知道人们对此有何看法,因为微软表示他们是故意这样做来解决内存泄漏问题
我们不确定该怎么办。 将所有使用iframes的文档放入Quirks模式似乎不太合适。 但我们不确定其他选择是什么。 有什么想法吗? TIA。
JavaScript示例代码:
       <p id="after"></p>

..put iframe here...

        <script type="text/javascript">
            //uncomment code below in IE9 standards mode to see error
            //document.getElementById("after").appendChild(document.getElementById("iframe"));
        </script>

具体到元素的id,'iframe'在哪里? - Livingston Samuel
你引用的MSDN文档涉及到不在文档树中的IFRAME。但是你的问题并没有提到你是否正在尝试在不在树中的IFRAME上执行此操作。这是你想要做的吗?"blow up"具体指什么?错误信息是什么? - EricLaw
1
抱歉,我在发布时添加的标记已经损坏了...如果您在DOM中操作iframe,IE9将崩溃。用div包装它,或者移动它,BOOOM!顺便说一下,错误信息是原生JS对象,例如“Object”不存在。 - tengoal
确保直接移除包含 iframe 的元素,而不是仅仅移除 iframe 本身,解决了我的这个问题。链接答案:https://dev59.com/P2HVa4cB1Zd3GeqPigF2#9526904 - Brett Weber
1个回答

3

遇到这个问题后,我不得不将浏览器切换到怪异模式:

        Response.AddHeader("X-UA-Compatible", "IE=8");

如果有其他解决方案,肯定会受到欢迎,因为像 tengoal 一样,我怀疑这不是最佳选择,尽管它可行


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接