我有一个 iFrame,其中有一个打开的窗口(url
,uniqueID
,windowparams
)。iFrame 位于单页应用程序上,并托管在另一台服务器上。每次我刷新或更改页面然后返回到 IFrame 页面,然后尝试启动相同的window.open
。它不会刷新已打开的窗口,而是创建同一窗口的实例。在检查每个弹出窗口的 后,它返回与其window.name
相同的。如果将 url 设置为空白,则其行为将按预期运行。但是当设置 url 时,它会创建窗口的新实例。uniqueID
window name
- iFrame
window.open
在被破坏时会有这样的行为吗? - 我尝试在本地运行 iFrame 源,即使刷新后,打开的窗口仍能正常运作。
- 我在 IE、Firefox 和 Chrome 中尝试过,但返回了相同的行为。
更新:
Mike 通过为 iFrame 源添加沙盒属性成功修复了 Webkit 浏览器的行为。现在该window.open
方法按预期工作,并且不会创建相同窗口的新实例window.name
。
然而,Mike 仍然无法使用 Firefox。如果有人能解决这个问题,我将不胜感激。
下面的视频中展示了具有沙盒属性的 iFrame 的 Webkit 浏览器行为。
看到父级即使刷新后仍然可以检测到已经打开了同名的弹出窗口。 https://youtu.be/z5_xXRjY8Ow
下面的视频中展示了具有沙盒属性的 iFrame 的 Firefox 行为。
当父窗口刷新时,浏览器无法检测到已经打开的弹出窗口,并使用相同的弹出窗口创建另一个实例
window.name
。 https://youtu.be/uHaDveW1Sd0
有没有办法让 Firefox 的行为像 Webkit 浏览器一样?