在我的项目中,window.onload
是在将动态脚本加载到IE 8、9中之前执行的。
我有以下代码。
index.html
<DOCTYPE html>
<html>
<head>
<script>
var eScript = document.createElement('script');
eScript.type = 'text/javascript';
eScript.src = './script.js';
var eHead = document.querySelector('head');
eHead.appendChild(eScript);
window.onload = function() {
console.log('all resource is loaded');
}
</script>
</head>
<body>
</body>
</html>
script.js
console.log('[START] script.js');
,控制台输出为:
IE 8、9
> all resource is loaded
> [START] script.js
IE 10、11
[START] script.js
all resource is loaded
我知道window.onload将在下载页面所需的所有资源后运行。 IE 10、11可以正常工作,但是IE 8、9的行为不正确。
我需要一个事件侦听器,该侦听器将在所有动态资源(例如script.js)下载并在IE 8和9中运行后调用。如果有这种方法,我将不胜感激。
我该怎么办?谢谢。
答案 0 :(得分:1)
有两件事:何时加载脚本以及何时加载文档-显然,由于IE的原因,当时IE不会将动态注入的脚本作为窗口的一部分,而其他的则是。 >
无论如何-window.onload
控制后者(文档加载)。您可以手动控制前者(脚本加载)。最后一个脚本为<script> start(); </script>
。只要没有脚本defer
,这都应确保在加载所有内容时执行您的start
函数。或者,您可以附加eScript.onload
处理程序,以确切地知道何时完成所有操作。
或者,最好是自己动手制作,可以使用headjs之类的知名且经过测试的脚本加载器。