javascript
  • dom
  • 2010-10-27 61 views 0 likes 
    0

    任何人都可以解釋什麼時候使用JavaScript來插入基於JavaScript的小部件?當您使用JavaScript插入JavaScript小部件時會發生什麼?

    這裏是我的js代碼:

    var para = document.getElementsByTagName("p"); 
    var cg = document.createElement("div"); 
    cg.setAttribute("class", "twt"); 
    cg.innerHTML='<a href="http://twitter.com/share" class="twitter-share-button" 
    data-count="vertical" data-via="xah_lee">Tweet</a> 
    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>'; 
    document.body.insertBefore(cg, para[1]); 
    

    它插入Twitter的小部件,第一段之前。正如你在上面看到的那樣,Twitter小部件需要一個JavaScript來顯示該頁面被推送了多少次。

    在Firefox,Chrome中不起作用,但在IE8中半工作。發生這種情況時應該預期的行爲是什麼?新插入的js代碼應該執行嗎?如果是這樣,它與代碼是否在頁面本身有什麼不同?

    回答

    1

    innerHTML無法插入腳本標記(因爲大多數瀏覽器中的鏈接腳本將無法執行)。真的,您應該在服務器端插入腳本標記一次,並且insert only the link at the location of each post(也就是說,如果您將此添加到顯示多個帖子的博客主頁,每個帖子都有自己的URL)。

    如果由於某種原因,你決定,你必須使用JavaScript的一個片段來做到這一切,至少進口的方式鳴叫按鈕腳本,將工作,例如,the Google Analytics wayMediaWiki way(看爲importScriptURI函數)。 (請注意,我不知道鳴叫按鈕的細節,所以它可能不工作。)

    +0

    所有頁面都是靜態html頁面,而不是來自服務器。長話短說,我不能改變這一點。 – 2010-10-27 02:26:58

    +0

    編輯我的答案,包括鏈接到已編寫的函數來導入JavaScript文件。 – PleaseStand 2010-10-27 02:32:23

    2

    爲了執行通過innerHTML插入到DIV中的JS代碼,您需要執行以下操作在http://www.coderanch.com/t/117983/HTML-JavaScript/Execute-JavaScript-function-present-HTML尤里Fuksenko提供)

    function setAndExecute(divId, innerHTML) { 
        var div = document.getElementById(divId); 
        div.innerHTML = innerHTML; 
        var x = div.getElementsByTagName("script"); 
        for (var i=0;i<x.length;i++) { 
         eval(x[i].text); 
        } 
    } 
    

    稍微更先進的方法是在這裏:http://zeta-puppis.com/2006/03/07/javascript-script-execution-in-innerhtml-the-revenge/ - 尋找<script>標籤,把他們的內容,並創建一個新的因素<head>

    相關問題