4

Chromeのブラウザアクションアイコンに奇妙な問題があります。マニフェストで定義されたブラウザアクションのデフォルトアイコンがあります。アイコンが正しく表示されます。次に、バックグラウンドページで、いくつかの条件下で、私は次のように呼び出します。

chrome.browserAction.setIcon({path:"green_32.png", tabId:request.tabId});

このアイコンが一瞬点滅した後、デフォルトのアイコンに戻ります。setIconアクティブなタブとそのIDは、すべてのプロセスで同じままになるように渡されます。

誰かがこれが起こり得る理由のアイデアを提案できますか?

4

1 に答える 1

7

アイコンが毎回デフォルト状態にリセットされた理由は、タブの読み込みが完了して「完了」状態になるsetIcon 前に呼び出したためです。

タブブラウザのアクションに関するドキュメントにこれに関する情報があるはずですが、見つかりませんでした。デフォルトのアイコンは、読み込みが完了した後、特定のページに実際に(設計により)適用されます。呼び出しsetIcontabs.onUpdatedハンドラーに移動しましたが、カスタムアイコンが保持されます。

これは、ブラウザのアクションアイコンがタブごとに設定され、タブに読み込まれたページとその状態に関係なく設定されるという以前の理解と矛盾します。

@KonradDzwinelは、ケースをテストするための簡単な拡張機能を親切に提供してくれました(コメントを見てください)。この動作を示すために、 background.jsスクリプトを変更しました。

chrome.browserAction.onClicked.addListener(function(tab)
{
  chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});

この動作を再現するには、任意のタブでブラウザのアクションアイコンを押して変更します。次に、ページを更新します。その結果、ブラウザのアクションアイコンがデフォルトにリセットされます。

この動作がいくつかのドキュメントで説明されている場合は、コメントに書き込んでください。回答を更新します。これまで読んだことから、作成時にデフォルトのアイコンが新しいタブに設定されており、それに対する変更はすべて拡張機能の制御下にあると確信していました。

于 2012-10-03T17:35:19.400 に答える