某些版本的MSIE中未定义window.opener.jsNamespace

时间:2013-11-04 18:45:17

标签: javascript internet-explorer cross-domain

我们有一个以下网络流程在某些MSIE代理上失败:

  • 来自域D1的页面P1在来自域D2的页面P2上创建iframe
  • P2有一个JavaScript w /名称空间jsNS& myMethod的
  • P2在第D2页上从域D2
  • 创建一个弹出窗口
  • P3调用window.opener.jsNS.myMethod

window.opener是指P2,它可以在我们可以测试的所有浏览器中正常工作,但我们在生产中看到少数 MSIE代理正在获取客户端JavaScript异常:

TypeError: Unable to get value of the property 'myMethod'

在这种情况下,window.opener.jsNS不为null,而是“undefined”。

对于移动设备/平板电脑设备,我们有一个没有弹出窗口的备用流程,虽然错误略有不同,但却出现了同样的问题。

 TypeError: 'window.opener.jsNS' is null or not an object

jsNS不是null,但在这种情况下也是'undefined'。

在移动流程中,我们可以想到的唯一区别是iframe P2嵌入了jsNS(相对于外部js文件),例如:

jsNS = {};
jsNS.myMethod = function() {return false;}
var P3 = window.open('', 'P3');
P3.focus();

此异常似乎影响了8到10的不同版本的MSIE,包括Media Center PC,平板电脑等各种包装,我们无法识别它们的模式。此外,尽管我们测试了许多不同的MSIE系统,但我们根本无法重现这个问题。

有没有人知道哪些类型的MSIE设置或包装或环境可能会导致某些用户出现此异常? 关于如何通过受影响的用户进一步解决这一问题的任何建议都会受到欢迎。

0 个答案:

没有答案