Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отслеживание загрузки скрипта (https://javascript.ru/forum/misc/34832-otslezhivanie-zagruzki-skripta.html)

bot87 21.01.2013 00:35

Отслеживание загрузки скрипта
 
привет.Попал на статейку http://javascript.ru/blog/Ilya-Kanto...tlovom-oshibok
Никак не получается код
function go(url, callback, errback) {
 
   var complete = false
    
   // временный обработчик
   var myCallback = 'callback_'+Math.round(Math.random()*1000000)
 
   window[myCallback] = function(data) {        
      setComplete()
      window[callback](data)     
   }
    
   url = url+'?callback='+myCallback
    
   /* очищает память */  
   function setComplete() {  
      complete = true
      try {
         // если каллбэк не очистить - утечка памяти захватит все замыкание
         delete window[myCallback]     
      } catch(e) {
         window[myCallback] = undefined
      }
   }
    
   /* эта функция сработает при любом результате запроса */
   function check() {     
      // эта функция запускается так, чтобы при успешной загрузке
      // она сработала после каллбэка
      if (complete) return     
      setComplete()
      window[errback]()
   }
    
   var script = document.createElement('script')  
   
   script.onreadystatechange= function () {   
      if (this.readyState == 'complete' || this.readyState == 'loaded') {     
         setTimeout(check, 0) // дать скрипту время на выполнение
      }
   }
    
   script.onload = script.onerror = check
   script.src = url
   document.body.appendChild(script)
}

go('1.js', 'callback', 'errback');



1.js
alert('src_file');


В случае неправильного адреса удаленного файла-все нормально-вызов errorback.

Теперь если все нормально-вызывается сначала alert('src_file');а затем
errback.В чем проблема?

Mel 21.01.2013 06:50

Возможно, я ошибаюсь, но в статье идёт речь о проверке загрузки php-скрипта. А для загрузки js можно воспользоваться FileSystemObject в компании с eval'ом.


Часовой пояс GMT +3, время: 23:48.