在我的扩展程序中,当当前标签网址位于我的目标网址列表中时,我会发送一些注入代码。这是代码
chrome.tabs.onUpdated.addListener(function(tabId, info) {
if(info.status == "complete") {
var tabUrl = "";
var run = false;
chrome.tabs.get(tabId, function(tab) {
tabUrl = tab.url;
});
var storedList = localStorage["GAR_ExcList"];
if(!storedList) storedList = "";
var storedListArray = storedList.split("\n");
for(var i = 0; i < storedListArray.length; i++) {
var ind = tabUrl.indexOf(storedListArray[i]);
alert("for " + i + " index is " + ind);
if(ind != -1) {
alert("Running");
run = true;
break;
}
}
if(run) {
chrome.tabs.executeScript(tabId, { file: "js/jquery-1.6.1.min.js" }, function() {
chrome.tabs.executeScript(tabId, { file: "js/inject.js"});
});
}
else {
alert("excluding");
}
}});
即使这段代码非常好。出于某种原因,当我在for循环中注释掉警报时,我得到run = false并且我收到了最后一个警告,我不应该这样做。
以前有没有人见过这样的东西?非常感谢任何帮助。
最佳,
答案 0 :(得分:1)
而不是:
chrome.tabs.onUpdated.addListener(function(tabId, info) {
...
var tabUrl = "";
chrome.tabs.get(tabId, function(tab) {
tabUrl = tab.url;
});
尝试:
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
...
var tabUrl = tab.url;
chrome.tabs.get()
是异步的,因此如果您使用此方法,则需要将其余代码放在其回调中。