2013-11-28 25 views
4

当我使用window.open(href)以编程方式打开一个新标签页时,两个标签页同步工作,这意味着我停止时在其中之一的JavaScript调试器上,第二个被冻结。这是一个适当的铬行为?有办法解决这个问题吗?在Firefox中,同样的问题很好。Chrome浏览器在window.open()后同步标签()

回答

1

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

由于两个窗口共享一个Javascript解释器,因此在调试器中停止其中一个窗口应该停止这两者。我不知道为什么Firefox不这样做 - 不停止涉及两个窗口似乎可以使调试某些脚本非常困难。

+0

感谢您的回复!你知道任何方式来覆盖这种行为吗? – Boltosaurus

+0

使用除window.open()以外的方法打开新窗口,例如让用户用'target =“_ blank”'属性点击一个链接。 – duskwuff

相关问题