document.write()

來源:互聯網
上載者:User

標籤:

有時候使用javascript 中的document.write()函數,會將原來的html全部清除,然後寫上新內容,但有時候不會


於是這種情況什麼時候會出現呢?我搜了下:


http://www.blogjava.net/JAVA-HE/archive/2008/11/25/242420.html




沒太看懂,以後繼續看

 

---- 又搜到一個

 

write 方法用於向文檔流中寫入內容。當文檔在載入的時候,文檔流是可寫的,所以就不用調用open(),close()方法來開啟和關閉輸出資料流。當文檔載入完畢過後,文檔流是不可寫的,要write內容就得先開啟輸出資料流,通過調用open()開啟,這個open()方法則會清除當前文檔(通常open()方法會在調用write時自動調用)。所以第一個問題:不是<p>html標籤</p>無法載入,是清除了;同樣的樣式也清除了,當然你也得不head裡的樣式。

第二個問題:文檔從上而上載入渲染,當遇到window.onload=pri(),此時前面的樣式、&lt;p>..</p>等都分析完成。這時就要解析這句話window.onload=pri()。要往window.onload事件上綁定一個函數,而=號的右邊又不是一個函數而是一個函數的傳回值。所以就得先執行這個資料,得到傳回值,再綁定給window.onload。執行pri(),把write裡的東西寫到文檔裡,由於這時文檔還是處於載入渲染的階段,所以不會清除當前文檔,而是加文檔裡加入內容,你加入的div和原來body裡的div疊在一起了。這時pri()執行完了,而window.onload還期待pri()返回一個綁定函數,pri()沒有明確的返回語句也就預設返回undefined,而undefined和window.onload的綁定類型不對,所以會報錯。 至於你的樣式,你用write寫的div會用自己的style裡的樣式和#apDiv1裡的樣式一起計算,得到最後的樣式。你兩個div最後計算出來的樣式都一樣,所你看不出來差異(你可以試著把style裡的width減小就會看出來)。style屬性只能取得內聯裡的樣式結果,要得到<style></style>裡的和外部樣式(準確的說是計算樣式),得用另外的東西currentStyel、getComputedStyle。至於為什麼,東西太多這裡就不說了

(http://topic.csdn.net/u/20110524/18/3848a3cb-c05a-4f82-8ee1-dee2bbe09ce1.html)

 總結by me:

頁面還在載入時。文檔流可寫。不需要調用open(),close()方法來開啟和關閉輸出資料流    --追加

當頁面載入完(window.onload),document.write() --調用document.open() document.close()     --重寫

 

document.write()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.