Chrome在window.open()之后同步选项卡

Chrome synchronizes tabs after window.open()

本文关键字:之后 同步 选项 window open Chrome      更新时间:2023-11-15

在chrome中测试web应用程序时遇到了一些问题。当我使用window.open(href)以编程方式打开一个新选项卡时,两个选项卡正在同步工作,这意味着当我在其中一个选项卡上的javascript中停止调试器时,第二个选项卡将被冻结。这是一种恰当的chrome行为吗?有办法解决这个问题吗?在firefox中,同样的问题也适用。

此行为是正确的。使用Javascript打开的窗口与其父窗口共享一个Javascript解释器——调用window.open()将返回对新窗口的引用,子窗口可以通过window.opener获得对父窗口的引用。只要窗口显示来自同一来源的页面,在这两个窗口中运行的脚本就可以通过这些引用共享数据,因为Window对象也是Javascript全局上下文。例如,如果父窗口有一个名为example的全局变量,则子窗口可以将该变量引用为window.opener.example

由于这两个窗口共享一个Javascript解释器,因此在调试器中停止其中一个窗口应该同时停止这两个。我不知道Firefox为什么不这么做——不停止两个相关的窗口似乎会让调试一些脚本变得非常困难。