调用hasOwnProperty()时IE9“无法从释放的脚本执行代码”

时间:2011-11-29 21:05:47

标签: javascript security internet-explorer-9

以下是该方案:

我有一个容器页面可以交换iFrames以显示不同的内容。所有iFrame都来自同一个域。 https已启用。

  • 容器页面有一个名为Flow的对象,其函数设置为/ getParameter
  • 第一个iFrame,s0-welcome,创建一个对象,数据,并调用Flow.setParameter('data',data);
  • 然后容器用第二个iFrame s1-transfer替换第一个iFrame。
  • s1-transfer调用Flow.getParameter('data')并将其存储在本地变量s1data

在IE9调试工具控制台中,如果我输入s1data,它会显示该对象的所有属性。但是,如果我调用s1data.hasOwnProperty('prop1'),我会得到一个“无法从释放的脚本执行代码”错误。如果我调用Object.prototype.hasOwnProperty.call(s1data,“prop1”),一切正常。

在我看来,有两种可能性:

1)容器页面保留第一个iFrame的引用,但是当第一个iFrame被丢弃时,它会丢失一些数据。这似乎不太可能,因为我唯一无法访问的是函数

2)有一项安全限制,即使两个iFrame来自同一个域,也不允许一个iFrame运行与另一个iFrame相关的代码。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

刚遇到类似的问题。对我而言,只需将s1data.hasOwnProperty('prop1')更改为('prop' in s1data)即可使错误消失。