该行为在所有浏览器中都不一致。请记住,在jsfiddle中,由于您选择了左侧的onLoad
设置,因此此代码已包装在窗口负载回调中。 DOM加载后,使用document.write
的任何后续更改将替换整个文档。
下面是来自HTML5 specs上文件撰写相关文字:
除非从脚本元素的机构,称为在文档被解析,或者叫上一个脚本创建的文档,则调用此方法将清除第一个当前页面,就好像document.open()被调用一样。
下面介绍如何在浏览器上我的Mac表现给出这个code:共
Chrome和Safari
抹了文件。即使100不打印。文本节点本身在这里被忽略,但是当包装在一些html标签中时 - 它们显示出来了。
This code与上面相同,其值分别包含在
<b>
和
<i>
标签中。
Opera和Firefox
湿巾出文档,然后追加文本节点 “100undefined”。它打印“未定义”,因为在新文档中节点
<div id="timers></div>
不再存在。
但是,它打印“100”的第一次你叫document.write
在Opera和Firefox
document.write($('#timers').data('firsttimer'));
因为函数参数$('#timers').data('firsttimer')
首先计算,并且由于原始文件是在这一点上完整,我们得到值100,然后传递给document.write
,然后重新创建整个文档。因此,所有后续调用取回与#timers
相关的数据都将返回未定义状态。
你在哪里叫blah()? – derek 2010-05-24 00:34:46
对不起,更正了代码 – John 2010-05-24 01:01:44