2014-11-02 3 views
0

Часть моих тестов расширения хром, чтобы узнать, подключен ли пользователь к Интернету. Он работает один раз отлично, но после его запуска $ .ajax === undefined, и я не знаю почему. Я не вижу каких-либо сеттеры, которые могли бы изменить $ .ajaxjQuery.ajax работает только один раз

var testInternet = function(callback) { 
    "use strict"; 
    var testURLs, doCallback, i, failCount; 
    if (! callback) { 
     callback = function(){}; 
    } 
    doCallback = true; 
    failCount = 0; 
    testURLs = [ 
    "http://clients5.google.com/pagead/drt/dn/dn.js" 
    ]; 
    for (i= 0; i < testURLs.length; i++) { 
     testConnection(testURLs[i], function(success){ 
      if (success && doCallback) { 
       doCallback = false; 
       callback(true); 
       return; 
      } else { 
       failCount += 1; 
       if (failCount === testURLs.length) { 
        callback(false); 
        return; 
       } 
      } 
     }); 
    } 
} 

var testConnection = function(url, callback) { 
    "use strict"; 
    $.ajax({ 
     url: url, 
     timeout: 10000, 
     cache: false, 
     success: function(data) { 
      callback(true); 
      return; 
     }, 
     error: function(data) {, 
      callback(false); 
      return; 
     } 
    }); 
} 
+2

Должно быть что-то еще. Этот код, похоже, не является проблемой. – plalx

+0

Как загружается jQuery, если нет сетевого подключения? – jfriend00

+0

@ jfriend00 Он может быть кэширован. – plalx

ответ

1

Похоже, потому что вы получаете файл .js, Jquery автоматически по умолчанию определяет dataType к script, что приведет к JQuery, чтобы оценить сценарий быть загружен , Указание dataType: 'text' должно предотвратить нежелательное поведение.

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