在IE中关闭Iframe时出错
Error when closing Iframe in IE
制作一个在Iframe内使用Hililide打开的视频网站。这一切都很好,除了IE。当我关闭Hililide(并删除其中的Iframe)时,我得到这些错误消息:
SCRIPT5007: Unable to get property 'random' of undefined or null reference
File: jquery.min.js, Line: 2, Column: 1711
SCRIPT5009: 'jQuery' is undefined
File: flowplayer.min.js, Line: 6, Column: 1
SCRIPT5009: 'flowplayer' is undefined
File: index.php, Line: 20, Column: 4
偶尔我得到一个重复的错误:
SCRIPT445: Object doesn't support this action
File: jquery.min.js, Line: 2, Column: 4058
如果我在错误发生后重新打开完全相同的Hililide Iframe,它会打开没有任何问题,但仍然有关闭错误。我真的不知道该怎么解决这个问题。
听起来你遇到的是IE的一个奇怪的角落bug。基本上,如果iframe在另一个元素中,在某些情况下,当该元素被销毁时,iframe中的脚本将再次运行,这次没有上下文—像Object
和Math
这样的内容将会消失。
因为这些脚本运行在一个被破坏的iframe上,我发现这些错误通常是无害的,但我仍然不喜欢它们。
我发现IE和jQuery(1.11.0)之间的交互似乎会导致这个问题。尝试先使用纯DOM调用清空包含iframe的元素:
// Instead of:
//$('div').empty();
// Run this:
var div = $('div')[0];
while (div.firstChild) {
div.removeChild(div.firstChild);
}
不知道为什么这会起作用,甚至如果在大多数情况下都起作用(它在我的沙箱中起作用,但在实际代码中不起作用),并且对进一步诊断IE的奇怪疾病没有兴趣,但它似乎有时会消除错误并且基本上以相同的方式工作。:)
在highslide-full.js
文件(版本为4.1.12)中,在afterClose
函数中(大约在第2926行左右),您应该发现如下:
if (this.outline && this.outlineWhileAnimating) this.outline.destroy();
在这行之后,加上:
if (this.iframe) {
this.body.removeChild(this.iframe);
}
我们已经用额外的代码解决了IE9关闭问题。
相关文章:
- 防止Iframe窗体在新窗口中打开
- 将样式表插入iframe
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用jQuery从原始页面内容创建iframe
- IE9”;访问被拒绝”;访问IFrame时出错
- 在 Javascript 或 Jquery 的 Iframe 中出现外部站点的 URL 时出错
- 通过POST将参数传递到iframe中的SSRS时出错
- 使用js处理iframe时出错
- 在HTA中获取IFrame元素时出错
- 在iframe中显示提要内容出错
- Angularjs $compile会导致iframe上的onload事件出错
- 在IE中关闭Iframe时出错
- 使用try块捕获'sameorigin'加载iframe时出错
- 在iframe中包含jQuery时,Internet Explorer 9(不是早期版本或其他浏览器)出错
- 获取IFrame子项的高度时出错
- iframe中的加载站点在IE中出错
- 放大弹出窗口:尝试从内联弹出窗口调用YouTube iframe弹出窗口时出错
- 设置和检索iframe的隐藏输入字段的值时出错