2011-09-08 88 views
4

的,我知道有很多的問題,用document.write的罪惡和我避免它絕對。但是,我遇到了使用它的第三方小部件的問題。我不太清楚如何用文字說話(也可能不知道所有的原因)爲什麼應該避免這一小部分純粹的邪惡。什麼是所有文件撰寫

我已經改寫了第三方給出,這樣它不使用document.write內聯的插件的代碼。但是,該代碼會加載使用它的其他腳本。我延遲,這是造成其document.write調用onload後發生的,覆蓋我的整個頁面的腳本加載。

所以,問題是,什麼都使用document.write,這樣我可以提供關於爲什麼第三方應該可以解決他們的代碼的完整列表的問題是什麼?

預先感謝您!

+0

實際上只是在文檔加載後它會覆蓋頁面的內容。哦,並且它在XHTML文檔中不存在。 IMO。 –

+0

在這裏,我認爲你有「什麼是文檔的邪惡」,我很興奮的一個良好的討論之前,這個關閉;) –

+2

看到這個問題 - http://stackoverflow.com/questions/802854/why-在文檔寫考慮的,一個壞實踐 – ipr101

回答

4

報價從following post

  • 由於內嵌腳本強制用戶的瀏覽器等代碼 完整的(即使我們不得不等待外部URL加載)之前 渲染頁面的其餘部分。

  • 因爲我們不能在將輸出嵌入到實際網頁之前進一步處理(修改/複製等)輸出 。

  • 此外,他們臃腫的XHTML代碼
1

我與document.write唯一的經驗是一個地方顯示空白頁面的其餘部分,所以這個原因,我會避免它。

此外,像jQuery這樣的庫以及本地JavaScript選擇器功能,元素的內容可以改變,而不必確定document.write放置在任何你想要的內容。這意味着您可以將您的JavaScript與標記分開,從而使所有內容更清潔,更易於管理。

1

我想用一記添加到達林的回答關於使用document.write頁面加載完成後。文檔流在頁面加載完成後關閉。這是由瀏覽器完成的。如果在發生這種情況後嘗試使用document.write,則文檔流將再次打開並接受輸入,但不會自動關閉。這使瀏覽器處於仍認爲正在加載內容的狀態。如果您注意到服務器永無止境的「連接」,這可能是一個可能的原因。其他副作用可能是一個空白頁面(不知道這是否在IE或FireFox中)。