6

ブラウザ アクションを実装する拡張機能があります。もちろん、ブラウザ アクションは常に表示されますが、特定の URL では特別な意味があります。そのため、フィルタリングされたイベントを使用してこれらの URL をリッスンし、適切なバッジを設定します

chrome.webNavigation.onDOMContentLoaded.addListener(
    function(tab){
        chrome.browserAction.setBadgeText({
            text:'bdge',
            tabId: tab
        });
    },
    {'url':[{hostSuffix: 'somedomain.com', pathPrefix: 'somePath/'}]}
);

ユーザーがすべてのタブ ナビゲーションを聞くことなく、そのページから移動したときにバッジをリセットする「エレガントな」方法はありますか? コンテンツ スクリプトを実行して、何らかの終了イベントでハングアップし、メッセージを送信する必要がありますか?

どうもありがとうございました、

4

2 に答える 2

4

良い解決策は を使用することだと私には思えますchrome.tabs.onUpdated

バックグラウンド ページには、次のようなものがあります。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    // using a regex or however else you want to test the URL
    if (/somedomain\.com\/somePath\//.test(changeInfo.url)) {
        chrome.browserAction.setBadgeText({
            text: 'bdge',
            tabId: tabId
        });
    } else {
        chrome.browserAction.setBadgeText({
            text: '',
            tabId: tabId
        });
    }
});

「すべてのタブ ナビゲーションを聞かずに」と書いたことは知っていますが、なぜこれを避けたいのかわかりません。

于 2013-08-30T16:11:59.280 に答える
3

これはドキュメントに記載されていないことです。ユーザーが別の場所に移動すると、Chrome は実際にバッジを自動的にリセットします。

ブラウザ アクションのバッジを特定のタブのみに設定すると、次のようになります。

chrome.browserAction.setBadgeText({
  text: 'ABCD', // My badge's text should be only 4 characters long
  tabId: 1234  // Any tab, ussually a var here, not a constant
});

Chrome は、そのタブがウィンドウ内のアクティブなタブである場合にのみ、ブラウザーのアクション ボタンにバッジを表示します。ユーザーがそのタブから移動すると、そのテキストは '' にリセットされます。リセットするための特別な操作は必要ありません。

于 2013-09-14T11:47:19.950 に答える