IE9中的白屏问题 - 删除iframe

时间:2012-02-29 14:25:48

标签: javascript internet-explorer-9 jquery-ui-dialog

我想知道是否有人能够对我一直在努力解决的一个非常奇怪的IE9问题有所了解。

我完成了工作站点的制作 - 它在ff / chrome / ie7 / ie8中运行良好,没有脚本错误。

在IE9上,应用程序的最后一步会导致整个选项卡无白屏,没有脚本错误或警告。 (将文档模式更改为ie8将解决问题,但显然不适合生产)

不幸的是,该网站非常复杂,有大量的ajax和页内脚本,因此我无法轻松发布相关代码。我更想弄清楚如何诊断这个。

我检查了IE错误日志,但它们都是空的。 Web开发人员工具什么都没说。该网站没有使用任何插件(Flash / Silverlight,Ect。)只是javascript w / jQuery。

在失败的步骤周围的iframe中显示PDF - 但在上一步(使用相同的方法)中显示几乎相同的pdf而没有问题。代码在调用jquery UI窗口时失败,但我似乎无法获得确切的行。

如果有人知道如何进一步诊断这一点,我真的很感激。我可以继续寻找虫子,但我以前从未见过这种行为,只是不确定我在寻找什么。

3 个答案:

答案 0 :(得分:9)

感谢您的所有输入。抱歉,我完全被一些项目所淹没,所以我无法发布调试步骤的更新。

它花了很长时间,但当我关闭包含第一个PDF的对话框时,我终于意识到一切都崩溃了。

我的一个辅助函数是打开对话框并在关闭时自动销毁内容。通常,这可以正常工作,因为我要么删除包含页面片段的div或iframe。

在这种情况下,我在对话框中加载了一个页面片段,其中包含一些按钮和pdf iframe。我在包含iframe而不是iframe本身的父元素上调用了.remove()方法。出于某种原因,这似乎在其他所有浏览器中都能正常工作 - 但在IE9中,它几乎杀死了页面呈现而没有任何警告或消息。

我强烈怀疑罪魁祸首是adobe插件,但我并不完全确定。

以下是修复
HTML:

<div id="container">
 <iframe src="loremipsum.pdf"></iframe>
</div>

Javascript:

//Ruins my entire week
$("#container").remove(); 

//Works as the pdf is removed directly
$("#container").find("iframe").remove().end().remove(); 

答案 1 :(得分:1)

我尝试使用AngularJS删除div中的iframe时,在IE11上遇到了同样的问题。首先删除iframe会导致同样的问题,所以我先将iframe src导航到一个新页面(about:blank),然后删除有效的div。希望这可以帮助有类似问题的人。

下面的伪代码:

$ctrl.iframeUrl = 'about:blank'; // change the iframe url here
$timeout(function(){
    $ctrl.removeIframe(); // remove the iframe here
});

答案 2 :(得分:0)

作为尝试的事情 - 看看IE9 DOM查看器中的屏幕后是什么。有很大的机会,大多数东西都存在,只是没有正确渲染(或有其他东西渲染)。至少,知道它是否从DOM中丢失了大量的东西应该会给你一些有用的数据。