我正在构建一个简单的Chrome扩展程序,并在更新标签后尝试运行Ajax请求。简单地说,每次访问新域时,都会检查域以查看它是否受支持。
我遇到了Ajax回调问题;它永远不会被解雇。成功,错误或完整,没有一个被解雇。具体来说,这是在chrome.tabs.onUpdated.addListener回调中发出Ajax请求的时候。所以下面的内容不起作用:
background.js:
chrome.tabs.onUpdated.addListener(function(tabid, changeInfo, tab)
{
test();
});
function test()
{
$.ajax(
{
url: 'http://exampledomain.com/check.php',
type: 'post',
dataType: 'JSON',
data: {domain: 'test'},
error: function(jqXHR, textStatus, errorThrown)
{
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
},
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
complete: function(jqXHR, textStatus)
{
console.log(jqXHR);
console.log(textStatus);
}
});
}
但是,如果在侦听器之外调用test(),则会触发回调。
如果我在开发工具中检查网络,则每个请求都成功,服务器返回预期的响应。但是如果从侦听器回调中调用Ajax,则永远不会捕获响应。
为清楚起见,清单如下:
{
"manifest_version": 2,
"name": "Test Extension",
"description": "Extension Description",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
"default_title": "Popup Title"
},
"permissions": [
"storage",
"tabs",
"notifications",
"http://exampledomain.com/"
],
"background": {
"scripts": ["jquery.min.js", "background.js"],
"persistent": true
}
}