javascript - 谷歌扩展程序 : Tab Events - changing windows?

标签 javascript google-chrome-extension event-handling

我写了一个扩展,它改变了他在网站上的图标,匹配了 if 子句。 看看:

chrome.tabs.onActivated.addListener(
    function (activeInfo) {
            chrome.tabs.get(activeInfo.tabId, function(tab){
                hosterRegExp(tab.url); //Function to change Icon

        });     
    }
);

chrome.tabs.onUpdated.addListener(
    function checkHosts(tabId, changeInfo, tab) {
        hosterRegExp(tab.url); //Function to change Icon
}
);

每次更改事件选项卡或重新加载选项卡时,都会使用当前 URL 调用函数 hosterRegExp。这工作得很好。

现在,这不适用于两个窗口。如果我在两个窗口之间进行更改,它不会调用 hosterRegExp();这是因为事件选项卡不会重新加载,也不会更改事件选项卡。

此外,我找不到另一个可以帮助我的 EventHandler。 所以我还必须检查当前的windowID?我不知道 - 请帮助我。

谢谢。

最佳答案

就像 RobW 告诉我的那样,我正在使用

  chrome.windows.onFocusChanged

现在提供 API。

嗯,就我而言,它看起来像这样:

chrome.windows.onFocusChanged.addListener(function() 
{
    chrome.tabs.query({currentWindow: true, active: true}, function(tab)
    {
        hosterRegExp(tab[0].url);
    }); 
});

我使用查询方法来获取焦点更改后的选项卡。虽然一个窗口中不可能有 2 个选项卡处于事件状态,但该数组每次只有一个元素。

这并不漂亮,如果有人有更好、更简洁的代码,请告诉我!

关于javascript - 谷歌扩展程序 : Tab Events - changing windows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19201718/

相关文章:

javascript - Chrome 扩展无法选择 DOM 元素

javascript - 为什么 event.ctrlKey 返回 undef?

Javascript:删除附加到对象方法的匿名函数的事件监听器

c# - WPF从列表框中删除项目

javascript - localStorage 是否只有在 DOM 准备好后才完全加载?

javascript - javascript 中的 indexOf(对象)

javascript - chrome.webRequest API,捕获 POST 数据?

google-chrome-extension - 获取所有搜索提供商/引擎列表的 API?

javascript - 如果 javascript 中存在,则在 url 中获取查询字符串

javascript - DIV 捕捉到网格并跟随鼠标