奇怪的chrome扩展javascript问题

时间:2011-05-14 02:00:08

标签: javascript google-chrome-extension

在我的扩展程序中,当当前标签网址位于我的目标网址列表中时,我会发送一些注入代码。这是代码

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并且我收到了最后一个警告,我不应该这样做。

以前有没有人见过这样的东西?非常感谢任何帮助。

最佳,

1 个答案:

答案 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()是异步的,因此如果您使用此方法,则需要将其余代码放在其回调中。