で拡張機能を作成しましたがpage_action
、残念ながらこれも使用できないbrowser_action
ため、 のコードを書き直す必要がありますbrowser_action
。
タブのURLをチェックしていて、正規表現と一致するとアイコンが変わります。これは機能しますが、タブがリロードまたは作成された場合にのみ機能しますが、既に読み込まれた別のタブにアクセスしたときは機能しません。したがって、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);
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)
私は自分がした間違いを理解できないので、誰かが私を助けてくれると本当にうれしいです.