2015-03-30 39 views
-1

我想要做的是這個。無論我的腳本包含在頁面中,注入一些html。所以,在:注入HTML包含腳本的地方

<script src="http://demo.com/stats/stats.js"></script> 

被添加到頁面,我可以輸出

<div id="stats"></div> 

在頁面中的那個位置。

+0

什麼?何時及如何包括在內;負載? – nicael 2015-03-30 20:13:16

回答

3

不要overthink問題:

document.write('<div id="stats"></div>'); 

如果腳本異步加載然而,這將失敗。

對於採用異步加載腳本有效的解決方案:

(function() { 
    function addHtml() { 
    var scripts = document.getElementsByTagName('script'); 
    for (var i = 0; i < scripts.length; i++) { 
     if (scripts[i].src !== 'http://demo.com/stats/stats.js') { 
     continue; 
     } 
     var div = document.createElement('div'); 
     div.id = 'stats'; 
     if (scripts[i].nextElementSibling) { 
     scripts[i].parentNode.insertBefore(div, scripts[i].nextElementSibling); 
     } else { 
     scripts[i].parentNode.appendChild(div); 
     } 
    } 
    } 
    if (document.readyState === "complete") { 
    addHtml(); 
    } else { 
    document.addEventListener('DOMContentLoaded', addHtml, false); 
    } 
})() 
+0

我真的不明白。除了覆蓋所有的html之外,它會做什麼?..並且你將在哪裏包含... – nicael 2015-03-30 20:16:20

+1

當與內聯腳本一起使用時,document.write'不會覆蓋你的文檔。它將完全按照要求進行。 – 2015-03-30 20:18:01

+0

@nicael [將一串文本寫入由document.open()打開的文檔流中。 注意:當document.write寫入文檔流時,在關閉的(加載的)文檔上調用document.write會自動調用document.open來清除文檔。](https://developer.mozilla.org/zh-cn/ US/docs/Web/API/Document/write)這意味着只要文檔當前處於打開狀態(例如,在初始頁面解析過程中)並且腳本同步執行(就像默認情況下那樣),腳本就會將它寫入任何地方標籤是。 – Shashank 2015-03-30 20:18:34