2010-03-16 79 views
4

是否有很好的理由,你爲什麼會包含JavaScript這樣的包含JavaScript:是否有任何理由,你爲什麼會使用document.writeln

<script type="text/javascript">document.writeln('<script src="http://example.com/javascript/MyJavaScript.js" type="text/javascript"><' + '/script>');</script> 

(對不起,長期滾動行這是在)

我最近在看一些HTML,並且我已經注意到了幾次(所有這些都在一個網站上)。我想不出爲什麼你會這樣做,但我很難聲稱自己是網絡開發者。這些代碼行很可能是自動生成的,但仍然有人在某個地方一定會認爲這是個好主意。

+0

你能給我網站的網址嗎?然後,我可能會更好地瞭解它爲什麼完成。 – Warty 2010-03-16 06:15:43

+0

對不起,但它不是一個公開訪問的網站。這是一個內部工具。 – 2010-03-16 06:37:03

回答

5

此技術已用於並行加載外部腳本,保留執行順序。

它有一些缺點,例如,在IE和Opera中,即使腳本並行加載,其他外部資源(如圖像,樣式表,其他框架等)也會被阻止下載,直到腳本加載。

但現在,我會建議通過DOM腳本包含外部腳本,動態生成script元素,但您必須關心IE memory leaks

檢查此test page查看您的瀏覽器的行爲。

-1

您可能需要動態地包含基於某種客戶端業務邏輯的JavaScript文件。

-1

該網站要求在稍後或加載頁面後加載js。

+0

您可以使用DOM操作來動態加載腳本。參見http://ajaxpatterns.org/On-Demand_Javascript#DOM-Based_On-Demand_Javascript – 2010-03-16 06:15:00

+0

爲什麼我們需要這個,有一些特殊的要求? – Ravia 2010-03-16 06:18:31

+0

你的答案意味着延遲JS需要writeln,而不是。 – 2010-03-16 06:29:11

-1

我不會說有什麼特別的原因。這只是直接寫入文檔的一種方式。

+0

爲什麼頁面使用JavaScript加載一個js文件,何時可以直接寫入外部腳本標籤? – Ravia 2010-03-16 06:17:02

+0

我認爲js可以直接包含在內。 – Ravia 2010-03-16 06:17:45

+0

@Ravia,有些情況下你需要動態地包含javascript。一個例子是JSONP。 – 2010-03-16 06:24:10

1

在一些情況下,document.writeln方法用於模糊處理腳本的源,和/或破壞簡單化廣告阻斷劑做簡單的字符串匹配所生成的HTML:

document.writeln('<' + 'sc' + 'r' + 'ip' + 't' + etc...) 

document.writeln('<script src="' + decode_obfuscated_url('encoded garbage here') + '">'); 
相關問題