該行爲在所有瀏覽器中都不一致。請記住,在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