我正在使用 Javascript 动态加载外部 Javascript 文件,在我的应用程序中,我需要知道这些脚本何时完全加载到内存中,然后其余进程才能继续。我已尝试使用以下代码来监视附加到头部的脚本标签上的 onload
事件:
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.onload = scriptLoaded;
newScript.src = '/path/to/file.js';
headID.appendChild(newScript);
<子> 来源:http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS
这在 FireFox(最新版本的 Windows 和 OS X)中运行良好,但似乎 Chrome(同样在 Windows 和 OS X 版本中)没有正确观察事件,并且回调函数被过早调用。
有什么想法吗?
最佳答案
设法通过使用 jQuery 重写来解决问题:
var script_tag = $('<script><\/script>');
script_tag.attr('type', 'text/javascript');
script_tag.bind('load', function(e)
{
console.log('script loaded');
});
script_tag.attr('src', '/path/to/file.js');
$('head')[0].appendChild(script_tag[0]);
不确定为什么会修复它,也许 chrome 只是不喜欢在第一个使用纯 javascript 的实现中创建脚本标签的方式。 耸肩
关于jquery - Chrome 没有正确观察脚本标签上的 onload 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783941/