2015-11-21 53 views
-1

執行document.write()後,谷歌Chrome顯示我的HTML代碼從代碼A改爲代碼B。看來,document.write()覆蓋整個頁面。如果是,如何在head標籤內添加腳本標籤?不完整的HTML()`


代碼A:之前執行document.write()

<!--DOCTYE html--> 
<html> 
<head> 
    <script src=".\js\main_CasCode.js"></script> 
</head> 
<body onload="main()"> 
    <p>hi</p> 
</body> 
</html> 


代碼B:執行document.write()

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
</head> 
</html> 


後在JavaScript的文件.\js\main_CasCode.js

function main() { 
    //console.log = function() {}; 
    loadjQuery(); 
    //waitjQueryLoaded_and_start(); 
} 

function loadjQuery() { 
    console.log("Loading jQuery..."); 
    var s = '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>'; 
    document.write(s); //<----Problem Here 
} 

回答

2

這是因爲document.write擦除和重寫當文檔已經完成渲染(如onload後)的文件。它只在頁面呈現期間被調用時纔會附加。

更好的方法是動態創建腳本元素,將其添加到頁面中,並添加觸發加載機制的src

var script = document.createElement('script'); 
document.getElementsByTagName('head')[0].appendChild(script); 
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'; 

在其他消息中,爲什麼您在控制頁面時動態加載jQuery?爲什麼不直接將它作爲<script>添加到HTML上?

1

我不認爲你想被使用document.write的。您可以使用以下內容。做一個腳本元素,而且它添加到head元素

var head = document.getElementsByTagName('head')[0] 
var s = document.createElement('script') 
s.src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" 
head.appendChild(s) 
1

文件撰寫覆蓋整個DOM

您可以創建一個功能

function loadjQuery() { 
    console.log("Loading jQuery..."); 
    var scrpt = document.createElement('script'); 
    scrpt.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'; 
    document.head.appendChild(scrpt); 
}