javascript – 在IE中关闭Iframe时出错

使用Highslide打开一个包含Iframe内部视频的网站.这一切都很好,除了在IE中.当我关闭Highslide(并删除内部的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

如果我在错误发生后立即重新打开完全相同的Highslide Iframe,它将打开正常没有任何问题,但仍然有关闭错误.老实说,我很难解决这个问题.

最佳答案 听起来你遇到的是IE的一个奇怪的角落错误.基本上,如果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的奇怪疾病,但它似乎有时消除了错误并且基本上工作了同样的方式. 🙂

点赞