在将动态脚本加载到IE 8、9中之前执行window.onload

时间:2018-12-21 05:44:03

标签: javascript internet-explorer cross-browser

在我的项目中,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中运行后调用。如果有这种方法,我将不胜感激。

我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:1)

有两件事:何时加载脚本以及何时加载文档-显然,由于IE的原因,当时IE不会将动态注入的脚本作为窗口的一部分,而其他的则是。 >

无论如何-window.onload控制后者(文档加载)。您可以手动控制前者(脚本加载)。最后一个脚本为<script> start(); </script>。只要没有脚本defer,这都应确保在加载所有内容时执行您的start函数。或者,您可以附加eScript.onload处理程序,以确切地知道何时完成所有操作。

或者,最好是自己动手制作,可以使用headjs之类的知名且经过测试的脚本加载器。