CB's blog

Динамическая загрузка JavaScript файлов

Декабрь 4, 2008

Не знаю, может это всем давно известно и тривиально, а может кому-то еще пригодится.

Собственно такая функция загружает JavaScript файл и после удачной загрузки вызывает функцию callback.

function addScript(src, callback) {
   var head = document.getElementsByTagName("head")[0];
   var script = document.createElement("script");

   script.type = "text/javascript";
   head.appendChild(script);
   script.src = src;

   // Normal browsers
   script.onload = callback;
   // IE
   script.onreadystatechange = function() {
      if(this.readyState == "loaded"  || this.readyState == "complete") {
         callback();
      }
   }
}

Пример использования:

addScript("http://job4it.net/informer/v0u0.5.0.js", ShowJob4ItData);

Литература:
Patrick Hunlock — Howto Dynamically Insert Javascript And CSS

P. S. Для меня самым сложным было сделать так чтобы работало в IE.

P. P. S. Описанный подход используется для «ленивой» загрузки баннеров на developers.org.ua

Комментарии (2) на “Динамическая загрузка JavaScript файлов”

  1. Legaev Andrey:

    Добавьте «complete» в проверку readyState:

    if (this.readyState in {‘loaded’:1, ‘complete’:1} ) {

  2. svoloshyn:

    2Андрей, спасибо, добавил.

Добавить комментарий