window.onload在IE 8、9加载动态脚本之前执行
window.onload is executed before the dynamic script is loaded in IE 8, 9
在我的项目中,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 中 运行。如果有这样的,我将不胜感激方式。
我该怎么办?谢谢。
有两个问题:何时加载脚本,何时加载文档 - 由于 IE 显然出于某种原因当时不将动态注入的脚本作为 window 的一部分,而其他人则这样做。
无论如何 - window.onload
控制后者(文档加载)。您可以手动控制前者(脚本加载)。只需将最后一个脚本设置为 <script> start(); </script>
。只要没有脚本是 defer
,这应该确保您的 start
函数在加载所有内容时执行。或者,您可以附加 eScript.onload
处理程序,以确切知道一切何时完成。
或者,您可以使用众所周知且经过充分测试的脚本加载器,例如 headjs。
在我的项目中,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 中 运行。如果有这样的,我将不胜感激方式。
我该怎么办?谢谢。
有两个问题:何时加载脚本,何时加载文档 - 由于 IE 显然出于某种原因当时不将动态注入的脚本作为 window 的一部分,而其他人则这样做。
无论如何 - window.onload
控制后者(文档加载)。您可以手动控制前者(脚本加载)。只需将最后一个脚本设置为 <script> start(); </script>
。只要没有脚本是 defer
,这应该确保您的 start
函数在加载所有内容时执行。或者,您可以附加 eScript.onload
处理程序,以确切知道一切何时完成。
或者,您可以使用众所周知且经过充分测试的脚本加载器,例如 headjs。