我在使用chrome测试我的Web应用程序时遇到了一些问题。当我使用window.open(href)以编程方式打开一个新选项卡时,两个选项卡正在同步工作,这意味着当我在其中一个选项卡上使用javascript停止调试器时,第二个被冻结了。这是一个适当的铬行为吗?有办法解决这个问题吗?在Firefox中,同样的问题也可以。
答案 0 :(得分:1)
这种行为是正确的。使用Javascript打开的Windows与其父级共享一个Javascript解释器 - 调用window.open()
返回对新窗口的引用,并且子级可以通过window.opener
获得对父级的引用。只要窗口显示来自同一源的页面,在两个窗口中运行的脚本可以通过这些引用共享数据,因为Window对象也是Javascript全局上下文。例如,如果父窗口有一个名为example
的全局变量,子窗口可以将此变量引用为window.opener.example
。
由于两个窗口共享一个Javascript解释器,因此在调试器中停止其中一个应该停止这两个窗口。我不确定为什么Firefox没有这样做 - 不停止涉及两个窗口似乎可能会使调试某些脚本变得非常困难。