web-dev-qa-db-ja.com

Chrome拡張機能アイコンを変更する

私はGoogleに不慣れですChrome拡張機能と私はあなたがいるページのコンテンツをチェックし、それに基づいてサーバーのIDを取得する私たちのウェブサイト用の拡張機能を作成しました(私たちは持っています4つのVMを備えたWebファーム)。サーバーIDを使用しているので、拡張機能アイコンを変更してそこに番号を表示する必要はありません。使用してみました:

chrome.browserAction.setIcon({
    path : folder + icons[2],
    tabId: tab.id
});

しかし、このエラーが発生します:chrome.browserAction is not available: You do not have permission to access this API. Ensure that the required permission or manifest property is included in your manifest.json.

エラーをグーグルで検索してドキュメントを検索しましたが、原因が見つかりません...

13
Richard

コンテンツスクリプトは、ほとんどの拡張APIにアクセスできません。代わりに、 メッセージパッシング を使用して、コンテンツスクリプトアラートにバックグラウンドページに実行する必要のある作業を通知させる必要があります。

コンテンツスクリプトは chrome.runtime.sendMessage を使用してメッセージを送信し、バックグラウンドページは chrome.runtime.onMessage.addListener を使用してリッスンする必要があります。

コンテンツスクリプト

if(shouldChangeIcon) {
    // send message to background script
    chrome.runtime.sendMessage({ "newIconPath" : folder + icons[2] });
}

背景ページ

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
        // read `newIconPath` from request and read `tab.id` from sender
        chrome.browserAction.setIcon({
            path: request.newIconPath,
            tabId: sender.tab.id
        });
    });
22
apsillers
Unchecked runtime.lastError: Icon invalid.

BrowserActionアイコンを変更したときに上記のエラーが発生した場合に備えて、明確にする必要があります。すべてのサイズの画像がサポートされているわけではありませんが、48x48が有効です。

0
sully