IE9中的白屏幕问题-删除iframe

Whitescreen issue in IE9 - Removing iframe

本文关键字:问题 删除 iframe 屏幕 白屏幕 IE9      更新时间:2023-09-26

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

我正在完成一个工作网站的制作——它在ff/cochrome/ie7/ie8中运行良好,没有脚本错误。

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

不幸的是,这个网站非常复杂,有大量的ajax和页面脚本,所以我不能很容易地发布相关的代码。我更想弄清楚如何诊断。

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

在失败的步骤附近,iframe中会显示一个PDF,但在前一步(使用相同的方法)中会显示几乎相同的PDF,没有问题。代码在调用jquery UI窗口时失败,但我似乎无法得到确切的行。

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

感谢您为此提供的所有信息。很抱歉,我同时被几个项目弄得不知所措,所以我无法发布调试步骤的更新。

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

我的助手功能之一是打开对话框并在关闭时自动销毁内容。通常情况下,这很好,因为我要么删除包含页面片段的div,要么删除iframe。

在这种情况下,我在对话框中加载了一个页面片段,其中包含一些按钮和pdf iframe。我对包含iframe的父元素调用了.remove()方法,而不是对iframe本身调用。出于某种原因,这似乎在其他所有浏览器中都能正常工作,但在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(); 

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

下面的伪代码:

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

作为一种尝试,查看IE9DOM查看器中的内容。很有可能大部分东西都在那里,只是没有正确渲染(或者有其他东西在上面渲染)。至少,知道它是否会从DOM中丢失大量内容,应该会为您提供一些有用的数据。