1

で拡張機能を作成しましたが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) 

私は自分がした間違いを理解できないので、誰かが私を助けてくれると本当にうれしいです.

4

1 に答える 1