从 window 到文档的映射

mapping from window to document

HTML5

http://www.w3.org/TR/html5/browsers.html#browsers

通常,从 Window 对象到 Document 对象存在一对一的映射。有两个例外。首先,Window 可以在相同的浏览上下文中重复用于第二个文档的呈现,这样映射就是 1 对 2 的。当浏览上下文从初始 about:blank 文档导航到另一个文档并启用替换时,会发生这种情况。 其次,当使用 document.open() 方法时,一个 Document 最终可以被多个 Window 对象重用,这样映射就是多对- 1.


如上第二个异常,

Many window objects share one document object by using document.open() method.

我的问题是“它是如何以及何时发生的?”

Document.open 吹走了文档的现有内容,但文档对象被重新使用并分配了一个新的 window 对象。所以旧的 window 对象和新的 window 对象都引用同一个文档对象。如果您在 JS 中保留了对旧 window 对象的引用,则可以通过任一 window 对象访问该文档。