0

背景.html:

// Called when the url of a tab changes.
function checkForValidUrl(tabId, changeInfo, tab) {
    if(changeInfo.status === "loading") {
      if (tab.url.indexOf('google.com') > -1) {
      // ... show the page action.
      chrome.pageAction.show(tabId);
      chrome.pageAction.onClicked.addListener(function(tab){

    chrome.tabs.create({url: "facebook.com", "active":true});

      });      
}
}
};


// Listen for any changes to the URL of any tab.
chrome.tabs.onUpdated.addListener(checkForValidUrl);

所以,我去谷歌,点击页面操作,在新标签打开facebook。我再次使用谷歌创建新标签,单击页面操作,它会打开 2 个 facebook-tabs。这很奇怪,因为我需要 - 1 点击页面操作 - 1 个新标签。如何解决?

谢谢。

4

1 回答 1

1

问题是您每次选项卡更改时都会添加一个事件侦听器。

由于每次选项卡更改时都会调用,因此checkForValidUrl每次选项卡更改时chrome.pageAction.onClicked.addListener也会调用。现在你pageAction有两个事件监听器做同样的事情。您可以通过多次更改选项卡来验证这一点,并查看它会打开与您更改的选项卡一样多的 Facebook 选项卡。

当然,要解决此问题,您应该从以下内容中删除checkForValidUrl

chrome.pageAction.onClicked.addListener(function(tab){
  chrome.tabs.create({url: "facebook.com", "active":true});
});

并把它放在外面,例如,在你为chrome.tabs.onUpdated.

于 2013-08-22T16:26:10.927 回答