动态JavaScript加载和执行
问题描述:
我想根据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,但不执行(至少不是我能决定)的脚本。这是第三方脚本,因此我无法直接控制它,因此也无法修改它。
答
在阅读下面的问题评论之后,似乎第三方脚本在window.onload事件上正在完成其工作。许多程序员使用这种风格。
window.onload = function() {
// Whatever task
};
如果你的页面的onload事件添加脚本标记之前动态中,“无论任务”代码永远不会执行已经被解雇了。
检查第三方脚本的来源。如果它使用window.onload,你可以尝试调用window.onload();在动态添加脚本标记之后。
加载是否正确?看看网络面板。如果是这样,是否有任何语法或运行时错误抛入控制台? – Bergi 2012-08-01 23:46:34
脚本是否包含应该立即执行某些操作的代码,或者是否定义了需要从您自己的代码中显式调用的函数?如果你用你自己的简单'test.js'替换第三方脚本,只包含'alert(“我已加载”);'会发生什么? – nnnnnn 2012-08-01 23:47:42
如果无法确定是否已加载,则可能需要尝试创建一个具有控制台日志的新JavaScript文件,并将脚本URL更改为指向该文件。 – JCOC611 2012-08-01 23:48:00