アイコンが毎回デフォルト状態にリセットされた理由は、タブの読み込みが完了して「完了」状態になるsetIcon
前に呼び出したためです。
タブやブラウザのアクションに関するドキュメントにこれに関する情報があるはずですが、見つかりませんでした。デフォルトのアイコンは、読み込みが完了した後、特定のページに実際に(設計により)適用されます。呼び出しsetIcon
をtabs.onUpdated
ハンドラーに移動しましたが、カスタムアイコンが保持されます。
これは、ブラウザのアクションアイコンがタブごとに設定され、タブに読み込まれたページとその状態に関係なく設定されるという以前の理解と矛盾します。
@KonradDzwinelは、ケースをテストするための簡単な拡張機能を親切に提供してくれました(コメントを見てください)。この動作を示すために、 background.jsスクリプトを変更しました。
chrome.browserAction.onClicked.addListener(function(tab)
{
chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});
この動作を再現するには、任意のタブでブラウザのアクションアイコンを押して変更します。次に、ページを更新します。その結果、ブラウザのアクションアイコンがデフォルトにリセットされます。
この動作がいくつかのドキュメントで説明されている場合は、コメントに書き込んでください。回答を更新します。これまで読んだことから、作成時にデフォルトのアイコンが新しいタブに設定されており、それに対する変更はすべて拡張機能の制御下にあると確信していました。