0

我们有以下 Web 流程在某些 MSIE 代理上失败:

  • 来自域 D1 的页面 P1 在来自域 D2 的页面 P2 上创建一个 iframe
  • P2 有一个带有命名空间 jsNS 和 myMethod 的 JavaScript
  • P2 在域 D2 的页面 P3 上创建一个弹出窗口
  • P3 调用 window.opener.jsNS.myMethod

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

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

在这种情况下,window.opener.jsNS 不是 null,而是“未定义”。

对于移动/平板电脑设备,我们有一个没有弹出窗口的替代流程,尽管错误略有不同,但也遇到了同样的问题。

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

jsNS 不为空,但在这种情况下也是“未定义”。

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

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

这个例外似乎影响了从 8 到 10 的不同版本的 MSIE,包括 Media Center PC、Tablet PC 等,我们无法识别它们的模式。同样,尽管我们测试了许多不同的 MSIE 系统,但我们根本无法重现此问题。

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

4

0 回答 0