我的Chrome扩展程序的一部分会测试用户是否已连接到互联网。它运行一次完美但运行后,$ .ajax === undefined,我不知道为什么。我没有看到任何可以修改$ .ajax
的settervar 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;
}
});
}
答案 0 :(得分:1)
看起来因为你得到一个.js文件,jQuery自动默认dataType
到script
,这将导致jQuery评估正在加载的脚本。指定dataType: 'text'
可以防止这种不受欢迎的行为。