2012-02-24 2 views
2

Я использую следующий фрагмент кода для асинхронного загрузки javascript неблокирующим образом. Он работает в Chrome, FF, но не работает в Internet Explorer.Анонимные функции не работают в Internet Explorer

Я запускаю IE8 и не могу использовать функцию onload в IE для кода ниже;

  <script type="text/javascript"> 
      (function() { 
       var s = document.createElement('script'); 
       s.type = 'text/javascript'; 
       s.async = true; 
       s.src = 'js/load_outer.js'; 
       s.onload = function() { 
        alert("Loaded"); 
       } 

       var x = document.getElementsByTagName('script')[0]; 
       x.parentNode.insertBefore(s, x); 
      })(); 
     </script> 

Может ли кто-нибудь помочь мне определить ошибку?

Благодаря

+0

Вы можете или не можете получить «нагрузку» событие при загрузке сценария в IE. – Pointy

+0

Возникает вопрос: [http://stackoverflow.com/questions/4845762/onload-handler-for-script-tag-in-internet-explorer](http://stackoverflow.com/questions/4845762/onload- обработчик-для-скрипт-таг-в-интернет-исследователь). – jabclab

+0

@jakeclarkson Спасибо за ссылку. Но мне пришлось избегать использования сторонней библиотеки. – Jayesh

ответ

2

IE (ранее 9) не поддерживает onload события для <script> элемента, используйте onreadystatechange вместо:

var complete = false; 
script.onload = script.onreadystatechange = function() { 
    if (!complete && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) { 
     complete = true; 
     // your callback code here 
    } 
} 
+1

Это помогло. Я застрял в аналогичной проблеме с IE9. Он дает двойные обратные вызовы. Вот статья, которая решает, что: http://www.aaronpeters.nl/blog/prevent-double-callback-execution-in-IE9 – Jayesh

Смежные вопросы