移除IE9 iframe窗口后将无法从释放的脚本执行代码?

时间:2011-12-05 17:19:59

标签: javascript dom iframe internet-explorer-9

在我的应用程序中,我在我的灯箱中创建了一个iframe,当我打开灯箱后会调用父窗口函数并关闭灯箱,在父窗口函数中会创建并更新一些DOM,然后当我回去父窗口我尝试访问这些DOM会引发异常“script5011:无法从释放的脚本执行代码”。

我在iframe上调用父窗口函数就像这个window.parent.myFunc(arg1,arg2 ....),它会得到一个异常,我认为这是一个IE 9的新功能改变了,因为我测试过IE 6,7,8等浏览器工作正常,我还没有找到IE 9的有效解决方案,希望能从这里得到答案。任何想法?

1 个答案:

答案 0 :(得分:1)

此问题的原因是IE9在随后更改帧的URL时删除对父窗口对象的引用,这样做是为了提高安全性。 对此的解决方案是在父窗口中设置功能,该功能可以修改(设置者和获取者)父窗口数据对象。在将对象序列化为字符串后,可以将对象传递给父窗口的函数。调用父框架功能的最佳方法是在子框架中调用以下内容。

window.parent.eval("resetDataObject()");

并在父框架中写下如下内容:

var myDataObject = [];
function resetDataObject()
{
    myDataObject = [];
}

查看此帖子http://www.tejzpr.com/2014/10/codefix-script5011-cant-execute-code.html