2013-11-27 144 views
-2

我有一段JavaScript代碼要添加在<body>標記的末尾,即緊接在</body>之上。 JavaScript不能直接添加到頁面。它通過外部工具插入到瀏覽器端。這個js代碼將被放置在</body>標籤的正上方,如下所示。如何動態地將JavaScript添加到</body>標籤上?

<head> 
something 
</head> 

<body> 
some html/js 
some html/js 
........ 
my js code here 
</body> 

我該怎麼做?有沒有什麼辦法可以在頁面中編寫代碼,但只能作爲外部工具中的js代碼的一部分?我被允許在工具中只寫JavaScript。

我的基本問題是如何在</body>標記之前插入腳本,當腳本被寫入其他地方?

+0

我們怎麼能知道這個未指定的外部工具可以做什麼?任何事情都有可能。或不。 – 2013-11-27 07:10:05

回答

1

您可以使用像這樣做:

document.body.appendChild(SCRIPT_NODE_HERE); 

此外,如果你正在使用Ajax,那麼你應該把你的代碼,說成功,並準備裝載腳本執行

一個事件但是如果你想動態地加載腳本,那麼在</body>標記之前沒有任何意義,因爲它不會給你帶來任何好處。

開發人員通常會將腳本放在身體的盡頭附近,以減少頁面加載時間,並在一定程度上延遲腳本執行,直到頁面加載完畢,因此它不會阻止其他內容並導致令人不快的體驗客戶。

所以,當你動態地加載你的腳本時,你的頁面已經下載了它的資源,並且不會有阻塞。

+1

這不是一個答案。它已經作爲評論發佈。 – 2013-11-27 07:09:18

+0

+1只是一個小的更正:「異步加載」不是「動態加載」 – alfasin

+0

順便說一句,儘管這並不回答OP問題 - 它肯定是有用的,因此+1。 – alfasin

0
document.onreadystatechange = function() { 
    if (document.readyState == "complete") { 
    your js code here 
    } 
} 

加載到使用工具的頁面此,筆者認爲無論在加載頁面時,它會執行一次頁面的readyState的變化和當頁面完全加載你的代碼將被執行。

+0

這可能是一個問題,如果我使用事件處理程序,因爲我必須爲不同的代碼片段 –

+0

做同樣的事情,就像我說過的,代碼將在頁面完全加載並準備好所有DOM元素後執行,因此您的事件處理程序應該管用。 – rps

+0

我明白了。但我可以這樣使用嗎? document.onreadystatechange = function(){script1} document.onreadystatechange = function(){script2} document.onreadystatechange = function(){script3} –