Изменение значка расширения Chrome

Я новичок в расширениях Google Chrome, и я создал один для нашего сайта, который проверяет содержимое страницы, на которой вы находитесь, и основывается на том, что получает идентификатор сервера (у нас есть webfarm с 4 виртуальными машинами), Теперь, используя идентификатор сервера, я не хочу менять значок расширения, чтобы показать номер там. Я пробовал использовать:

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.

Я пробовал ошибку в googling и искал документацию, но не могу найти причину этого...

Ответ 1

Скрипты содержимого не имеют доступа к большинству API расширений. Вместо этого вам нужно будет передать сообщение, чтобы сообщение script оповело о том, какие работы необходимо выполнить.

Ваш контент script должен отправить сообщение с помощью chrome.runtime.sendMessage, а фоновая страница должна прослушиваться с использованием chrome.runtime.onMessage.addListener:

Содержимое script:

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
        });
    });