Chrome页面操作弹出窗口消失

时间:2012-01-22 21:06:02

标签: google-chrome-extension

当标签页在地址栏中有特定的网址时,我需要显示一个页面操作弹出图标。

我在后台页面中有这个

chrome.tabs.query({url:"MYURL.COM"} , function(tab)
            {
                for(i=0;i<tab.length;i++)
                {
                    console.log(tab[i].id);
                    chrome.pageAction.show(tab[i].id);
                }

            });

每次重新加载扩展程序时都会显示弹出窗口,但只要用户刷新,它就会消失,但不会再回来。

3 个答案:

答案 0 :(得分:4)

原因是background.js页面只加载一次,因此每次更新页面选项卡时都需要添加一个监听器,以检查是否应该显示页面操作,如下所示:

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
    if (tab.url.indexOf("MYURL.COM") > -1) {
        chrome.pageAction.show(tabId);
    }
});

没有理由像你一样迭代每个标签。

答案 1 :(得分:2)

正如亚当已经说过的那样,tabs.onUpdated事件就是这样做的。

无论如何,[似乎我not the only one经历过tabs.onUpdated事件并非总是在应该发生的时候even when waiting for complete status

因此,如果您遇到同样的问题,您可能需要尝试我已经证明对我100%可靠的修改版本。

chrome.tabs.onUpdated.addListener(function(tabId, change) {
    if (change.status == "complete") {
        chrome.tabs.query({active: true}, function(tabs) {
            var tab = tabs[0];
            // Now do stuff with tab .. Eg:
            if (tab.url.indexOf("MYURL.COM") > -1) {
                chrome.pageAction.show(tab.id); } 
            else {
                chrome.pageAction.hide(tab.id); }
        });
    }   
});

答案 2 :(得分:0)

使用chrome.tabs.onUpdated收听您感兴趣的域名的新标签页和标签重新加载。