可以在窗口上更改文档吗?

时间:2014-06-11 03:58:15

标签: javascript html dom

在网络上的JavaScript中,是否有任何情况下全局document的{​​{1}}属性会将其值更改为新文档?

我不介意这是一个在现实生活中不会发生的不寻常的角落情况。 我想知道我是否可以认为,如果windowwindow将100%始终保持不变。

2 个答案:

答案 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对象   使用,这样映射就是多对一。

因此,简而言之,全局窗口对象上的文档对象可以更改。