在网络上的JavaScript中,是否有任何情况下全局document
的{{1}}属性会将其值更改为新文档?
我不介意这是一个在现实生活中不会发生的不寻常的角落情况。
我想知道我是否可以认为,如果window
,window
将100%始终保持不变。
答案 0 :(得分:0)
在页面加载后使用document.write
可以做奇怪的边缘情况。我不知道它是否创建了document
的新值,但是在清除DOM时脚本可以继续运行。
修改强>
刚刚使用Chrome进行了测试,document
没有改变。不容易测试其他浏览器ATM。
function z() {
var k = document;
document.write("Test");
var k1 = document;
alert(k === k1)
}
答案 1 :(得分:0)
每个文档都有一个窗口对象。
全局窗口对象是一个WindowProxy对象。当browsing context is navigated时,文档对象发生更改,全局窗口对象表示与新文档关联的窗口。
此外,文档本身的窗口对象也可以更改:
来自HTML5 spec:
注意:通常,Window对象的映射为1对1 Document对象。有两个例外。首先,一个窗口可以 重复用于在同一浏览中呈现第二个文档 上下文,这样映射就是1到2。这发生在a 浏览上下文从最初的about:blank Document导航到 另一个,启用替换。其次,文件最终会成为现实 当document.open()方法为时,重用几个Window对象 使用,这样映射就是多对一。
因此,简而言之,全局窗口对象上的文档对象可以更改。