http://www.w3.org/TR/html5/browsers.html#browsers
通常,从Window对象到Document对象存在一对一的映射。有两个例外。首先,可以重复使用窗口以在同一浏览上下文中呈现第二文档,使得映射然后是1到2。当浏览上下文从初始about:blank文档导航到另一个文档时,会发生这种情况,并启用替换。 其次,当使用document.open()方法时,Document最终会被重用于多个Window对象,这样映射就会多对一。
如上述第二个例外,
许多窗口对象使用document.open()方法共享一个文档对象。
我的问题是"它是如何以及何时发生的?"
答案 0 :(得分:1)
Document.open将文档的现有内容吹走,但文档对象被重用并被分配了一个新的窗口对象。因此,旧窗口对象和新窗口对象都引用相同的文档对象。如果您在JS中保留了对旧窗口对象的引用,则可以通过任一窗口对象访问该文档。