2011-12-22 46 views
0

我試過了

jQuery的$.getScript做了兩件事,但我不知道如何添加一個屬性到它添加到頁面的標籤。如何動態加載帶有屬性的js文件並在加載時執行回調?

我也試過這個(注:這是在CoffeeScript中):

$("<script>", {src: alohaScriptUrl, "data-aloha-plugins": alohaPlugins}) 
    .bind("load ready", onAlohaLoad) // also tried: .load(onAlohaLoad) 
    .appendTo("head") 

上述內容,文件加載並有適當的標籤,但onAlohaLoad不會被調用。

我該如何實現所有這三點 - 動態加載文件,在腳本標記中包含屬性,並在加載時執行回調

這裏的CoffeeScript中,說明我想要做什麼,但它不工作:

$ -> 
    onAlohaLoad = -> 
    console.log("aloha loaded") 

    if localStorage["isAdmin"] == "true" 
    alohaScriptUrl = "/plugins/alohaeditor-0.20.0-RC9/lib/aloha.js" 
    alohaPlugins = "common/format" 
    $("<script>", {src: alohaScriptUrl, "data-aloha-plugins": alohaPlugins}) 
     .bind("load ready", onAlohaLoad) 
     .appendTo("head") 

回答

1

你可以爲文本通過AJAX它取出來,並在它的腳本標籤的innerHTML財產。然後在追加(或之後)之前,您可以在該腳本元素上設置您的屬性。

var xhr = new XMLHttpRequest(); 
xhr.open("GET", "test.js", true); 
xhr.send(null); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState != 4) 
     return; 

    var script = document.createElement("script"); 
    script.innerHTML = xhr.responseText; 
    script.setAttribute(); //add attributes 
    document.body.appendChild(script); 

    console.log("callback!"); 
};