如果我从一个页面打开一个弹出窗口,有没有办法可以从另一个页面关闭该弹出窗口?
Page1-> 创建并打开弹出窗口。
Page2->关闭弹出窗口。
如果我从一个页面打开一个弹出窗口,有没有办法可以从另一个页面关闭该弹出窗口?
Page1-> 创建并打开弹出窗口。
Page2->关闭弹出窗口。
由于您无法在导航时保留对弹出窗口的引用,因此您不能这样做。但是,如果您使用pushState
更改父窗口的 url 并且不实际导航,则可以这样做。只需使用close()
方法即可关闭该弹出窗口
其他选项是使用服务器端脚本向您的弹出窗口发送关闭信号
我认为任何编码良好的浏览器都应该在沙盒环境中运行每个页面,因此一个页面甚至不应该知道其他页面存在或正在被浏览,更不用说它们对 DOM 或它们运行的 javascript 做了什么。
因此,任何允许从两个不同网页(或在浏览器中加载两次相同的页面)进行通信的解决方案都必须通过外部机制进行。如果同一个页面在同一个浏览器中加载了两次,他们应该共享他们的localStorage
,所以你可以用它作为发送消息的一种方式。
如果没有,您始终可以依赖外部 Web 服务来执行此操作。打开弹出窗口的页面必须实现轮询服务来查看它是否应该关闭它,并且试图关闭弹出窗口的页面必须向服务器发出请求它的 AJAX 调用,并等待其他页面拉结果。
它不像一行javascript那么简单,但如果你真的想要这个功能,你可以实现它。