Comments 5
Про setTimeout в openImagesPage() в статье ни слова. А без него не работает :-(. Причем с какой-то невнятной ошибкой.
Отличная статья. Только вот не могу разобраться, данные между вкладками передаются 1 раз из примерно 20. Так как я новичок, то как отследить почему так происходит. Т.е. плагин выгружает список на вторую страницу раз из 20. Хотя первая страница отрабатывает на отлично.
Все дело в функции openImagesPage. Скорее всего новая вкладка активируется раньше, чем ей отправляется сообщение. Попробуйте увеличить таймаут, сделайте его, например 500 миллисекунд, а не 100.
Кроме того, в последних версиях Chrome API, свойство "selected" для функции chrome.tabs.create стало deprecated, и рекомендуется использовать "active" вместо него.
Я эти два момента исправил в статье. Вот последняя версия openImagesPage:
function openImagesPage(urls) {
// Создать новую вкладку браузера с HTML-страницей интерфейса
chrome.tabs.create({"url": "page.html",active:false},(tab) => {
setTimeout(()=>{
// отправить список URL в новую вкладку
chrome.tabs.sendMessage(tab.id, urls, (resp) => {
// сделать вкладку активной
chrome.tabs.update(tab.id, {active: true});
})
},500)
});
}
Создание расширения браузера Google Chrome для извлечения всех изображений web-страницы. Часть 2