chrome.tabs.Tab не определен из сценария popup.js

Я просматривал расширение Chrome «Руководство по началу работы»:

https://developer.chrome.com/extensions/getstarted

и в одном разделе упоминается этот код

chrome.tabs.executeScript(
    tabs[0].id,
     {code: 'document.body.style.backgroundColor = "' + color + '";'});
};

Я получаю неопределенную ошибку на tabs[0].id. Теперь в документации API указано, что chrome.tabs.Tab доступен, но я не могу его получить. Что я делаю не так?


person kaminsky59    schedule 20.04.2018    source источник
comment
Вы получили вкладки через chrome.tabs.query()?   -  person Isitea    schedule 20.04.2018
comment
Мне не нужно, так как это не часть руководства. Если я ошибаюсь, я согласен с этим, но я еще не нашел никакой информации, указывающей на то, что это не так.   -  person kaminsky59    schedule 20.04.2018
comment
Где выполняется ваш код? И вы добавили разрешение "activeTab" или "tabs" к manifest.json?   -  person Luka Čelebić    schedule 20.04.2018
comment
Руководство устарело и некорректно. Вам нужно использовать запрос, как указано выше.   -  person wOxxOm    schedule 20.04.2018


Ответы (2)


Вы должны запросить вкладки.

Если вы хотите выполнить код на всех вкладках. Вы можете использовать этот код.

chrome.tabs.query({}, function(tabs) {
    var message = {foo: bar};
    for (var i=0; i<tabs.length; ++i) {
        chrome.tabs.executeScript(tabs[0].id, {
                code: 'document.body.style.backgroundColor = "' + color + '";'
            });
        };
    }
});

Если вы хотите выполнить код только на текущей вкладке. Вы можете использовать этот код.

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    chrome.tabs.executeScript(tabs[0].id, {
            code: 'document.body.style.backgroundColor = "' + color + '";'
        });
    };
});
person elegant-user    schedule 20.04.2018

Пожалуйста, проверьте свой файл манифеста, вам нужно будет дать соответствующее разрешение в файле manifest.json как:

"permissions": ["activeTab"],

предоставить доступ к API вкладок, который еще не предоставлен

person nitish173    schedule 20.04.2018