重置浏览器操作徽章的酷方法?

Ale*_*tri 5 google-chrome-extension

我有一个实现浏览器操作的扩展。当然,浏览器的动作是一直可见的,但是在某些url中具有特殊的意义。所以,我使用过滤的事件来监听这些 url 并设置正确的徽章

chrome.webNavigation.onDOMContentLoaded.addListener(
    function(tab){
        chrome.browserAction.setBadgeText({
            text:'bdge',
            tabId: tab
        });
    },
    {'url':[{hostSuffix: 'somedomain.com', pathPrefix: 'somePath/'}]}
);
Run Code Online (Sandbox Code Playgroud)

当用户从该页面导航出时,是否有一些“优雅”的方法来重置徽章,而无需监听每个标签导航?我应该执行一个内容脚本来挂起某个退出事件并发送消息吗?

非常感谢,

Tim*_*her 4

在我看来,一个好的解决方案是使用chrome.tabs.onUpdated.

在您的背景页面中,您会看到类似的内容:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    // using a regex or however else you want to test the URL
    if (/somedomain\.com\/somePath\//.test(changeInfo.url)) {
        chrome.browserAction.setBadgeText({
            text: 'bdge',
            tabId: tabId
        });
    } else {
        chrome.browserAction.setBadgeText({
            text: '',
            tabId: tabId
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我知道您写了“不听每个选项卡导航”,但我不确定您为什么要避免这种情况。