2012-08-01 139 views
3

我想根據API調用的返回值動態加載Javascript。我動態插入腳本標記,但它不會被執行。有人能幫助理解爲什麼嗎?相關的代碼片段粘貼下面動態JavaScript加載和執行

onError: function(code) { 
     if(code == "false") { 
     var headID = document.getElementsByTagName("head")[0]; 
     var scriptTag = document.createElement("script"); 
     scriptTag.type="text/javascript"; 
     scriptTag.src= 'scriptURL'; 
     headID.appendChild(scriptTag); 
     } 
} 

使用Firebug/Chrome檢查,我可以看到,腳本標記添加到DOM,但不執行(至少不是我能決定)的腳本。這是第三方腳本,因此我無法直接控制它,因此也無法修改它。

+1

加載是否正確?看看網絡面板。如果是這樣,是否有任何語法或運行時錯誤拋入控制檯? – Bergi 2012-08-01 23:46:34

+1

腳本是否包含應該立即執行某些操作的代碼,或者是否定義了需要從您自己的代碼中顯式調用的函數?如果你用你自己的簡單'test.js'替換第三方腳本,只包含'alert(「我已加載」);'會發生什麼? – nnnnnn 2012-08-01 23:47:42

+0

如果無法確定是否已加載,則可能需要嘗試創建一個具有控制檯日誌的新JavaScript文件,並將腳本URL更改爲指向該文件。 – JCOC611 2012-08-01 23:48:00

回答

1

在閱讀下面的問題評論之後,似乎第三方腳本在window.onload事件上正在完成其工作。許多程序員使用這種風格。

window.onload = function() { 
    // Whatever task 
}; 

如果你的頁面的onload事件添加腳本標記之前動態中,「無論任務」代碼永遠不會執行已經被解僱了。

檢查第三方腳本的來源。如果它使用window.onload,你可以嘗試調用window.onload();在動態添加腳本標記之後。