我做了一个扩展page_action
,不幸的是我也不能使用browser_action
,所以我需要重写我的代码browser_action
。
我正在检查选项卡的 URL,当它与 RegExp 匹配时,图标会发生变化。这有效,但仅当重新加载或创建选项卡时,而不是当我只是访问不同的已加载选项卡时。因此,即使 URL 完全“错误”,图标也不会改变。
只是旧代码:
function checkHosts(tabId, changeInfo, tab) {
if(hosts.length>0)
if(hosts.some(function (element, index, array) { return RegExp("(http|ftp|https)://([\w\.]*)"+element+"(.*)/").test(tab.url)})) {
chrome.browserAction.setIcon({path: 'img/icon-19.png'})
} else {
chrome.browserAction.setIcon({path: 'img/icon-19_off.png'})
}
}
chrome.tabs.onUpdated.addListener(checkHosts);
所以我尝试将 Event 从 更改onUpdated
为onActivated
。它给了我这个错误(振作起来):
Error in event handler for tabs.onActivated: TypeError: Cannot read property 'url' of undefined
at chrome-extension://hjldlodngamjdnompiekojgebnmolnab/background.js:28:122
at Array.some (native)
at checkHosts (chrome-extension://hjldlodngamjdnompiekojgebnmolnab/background.js:28:12)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Event.dispatchToListener (event_bindings:382:22)
at Event.dispatch_ (event_bindings:367:27)
at dispatchArgs (event_bindings:241:26)
at dispatchEvent (event_bindings:250:7)
我无法理解我所做的错误,所以如果有人可以帮助我,那就太好了。