我有一个 Web 应用程序,其中第 1 页使用打开一个弹出窗口
window.open(myUrl, "fixedApplicationTargetId", "");
然后页面 #2 使用相同的目标值调用 window.open 覆盖相同的弹出窗口
window.open(anotherUrl, "fixedApplicationTargetId", "");
此时,最初由页面#1 创建的弹出窗口的内容显示了由页面#2 创建的新内容。到目前为止,任何浏览器都很好。
然后弹出窗口本身会检测谁最后打开了弹出窗口并使用 window.opener 更新了内容。在调用 window.open 第 1 页和第 2 页之前,创建一个全局变量 globalPageId 并分别分配一个唯一编号。弹出窗口检查 window.opener.globalPageId 的值并检测哪个窗口最后更新了弹出内容。
这就是事情分崩离析的地方:上述内容适用于每次使用 window.open 更新内容时更新弹出窗口中的 window.opener 的 chrome 和 firefox。相反,IE 和 Opera 总是将弹出窗口 window.opener 指向第一个使用 window.open 的窗口。
任何建议,在多个页面在同一目标上调用 window.open 的情况下,如何从弹出窗口本身检测哪个窗口最后打开了窗口?