【发布时间】:2012-10-12 08:40:32
【问题描述】:
我有一个 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 的情况下,如何从弹出窗口本身检测哪个窗口最后打开了该窗口?
【问题讨论】: