カスタムアイコンが適用された後、ブラウザアクションのデフォルトのアイコンリッパーが実行されるのはなぜですか?
-
13-12-2019 - |
質問
Chromeのブラウザアクションアイコンに奇妙な問題があります。マニフェストで定義されたブラウザアクションのデフォルトのアイコンがあります。アイコンが正しく表示されます。次に、バックグラウンドページで、いくつかの条件の下で、私は呼び出します:
chrome.browserAction.setIcon({path:"green_32.png", tabId:request.tabId});
このアイコンはしばらく点滅し、デフォルトのアイコンに戻ります。アクティブなタブとそのidが渡されます setIcon
すべてのプロセス中に同じままにします。
誰かがなぜこれが起こる可能性があるのかという考えを提案できますか?
解決
アイコンが毎回デフォルト状態にリセットされた理由は、私が呼び出したためです setIcon
前に タブは読み込みを終了し、取得します "コンプリート" 状態。
私はこれに関するいくつかの情報がドキュメントにあるはずだと思います タブ またはオン ブラウザアクション,しかし、私はそれを見つけられませんでした:デフォルトのアイコンは、ロードが完了した後、実際には特定のページにデザインごとに適用されます。私は呼び出しを移動しました setIcon
に tabs.onUpdated
ハンドラー、そして今、カスタムアイコンが持続します。
これは、ブラウザのアクションアイコンがタブごとに設定され、タブにロードされたページとその状態に関係なく設定されているという私の以前の理解と矛盾しています。
@KonradDzwinelは親切にケースをテストするための簡単な拡張機能を提供しました(コメントを見てください)。私はそのを変更しました 背景。js この動作を示すスクリプト:
chrome.browserAction.onClicked.addListener(function(tab)
{
chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});
この動作を再現するには、任意のタブでブラウザのアクションアイコンを押して変更します。次に、ページを更新します。その結果、ブラウザのアクションアイコンがデフォルトにリセットされます。
この動作がいくつかのドキュメントで説明されている場合は、コメントにこれを書いてください。私がこれまでに読んだことから、デフォルトアイコンは作成時に新しいタブに設定されており、変更は拡張機能の管理下にあると確信していました。