从 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 对象访问该文档。
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 对象访问该文档。