window.onload выполняется до загрузки динамического скрипта в IE 8, 9 - PullRequest
0 голосов
/ 21 декабря 2018

В моем проекте 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 голосов
/ 21 декабря 2018

Есть два вопроса: когда загружаются сценарии и когда загружается документ - поскольку IE, очевидно, по какой-то причине не принимает динамически внедряемые сценарии как часть окна в то время, в то время как другие это делают.

В любом случае - window.onload контролирует последнее (загрузка документа).Вы можете управлять первым (загрузка скрипта) вручную.Просто последний скрипт будет <script> start(); </script>.Пока нет сценариев defer, это должно обеспечить выполнение вашей функции start, когда все загружено.Или вы можете прикрепить обработчики eScript.onload, чтобы точно знать, когда все будет сделано.

В качестве альтернативы и, возможно, предпочтительно для домашнего приготовления, вы можете использовать хорошо известный и проверенный загрузчик скриптов, такой как headjs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...