1

ページ読み込みイベントでボタンの背景色を変更することはできますが、これまでのところ、そのような方法はまったく見つかりませんでした。それが不可能な場合は、ページの読み込み後に読み込まれる事前定義された画像を使用できます。

私は次のことを試みましたが、成功しませんでした。

script.js

// chrome.browserAction.setIcon("red.png");
chrome.browserAction.setIcon({path:'red.png'});

マニフェスト.json

{
  "name": "Domain Colors",
  "version": "1.0",
  "manifest_version": 2,
  "content_scripts": [{
      "matches": ["http://*/*"],
      "js": ["script.js"]
  }],
  "permissions": [ "tabs", "http://*/*" ],
  "browser_action": {
    "default_title": "Colry",
    "default_icon": "blue.png"
  }
}
4

1 に答える 1

8

browserActionAPIを使用するには、バックグラウンドページが必要です。現在の制御フロー(コンテンツスクリプトを介してアイコンを更新)を維持したい場合は、メッセージを渡す必要があります。最低限必要なものは次のとおりです。

// script.js
chrome.extension.sendMessage('');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    chrome.browserAction.setBadgeBackgroundColor({
        color: 'red',
        tabId: sender.tab.id
    });
});

マニフェストファイルには、次の1つの追加エントリが必要です。

"background": {
    "scripts": ["background.js"]
}

ページの読み込みを検出するためのコンテンツスクリプトは必要ありません。単一のイベントリスナーを(バックグラウンドページで)使用できます。

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
    if (changeInfo.status === 'loading') {
        chrome.browserAction.setBadgeBackgroundColor({
            color: 'red',
            tabId: tabId
        });
    }
});

のドキュメントをよく見てくださいchrome.browserAction.setBadgeBackgroundColorbrowserAction APIを使用した例もたくさんあります。これらのサンプルを見ると、実際に機能する拡張機能を自分で取得できるはずです。

于 2012-11-26T21:20:42.080 に答える