#javascript #google-chrome #google-chrome-extension #callback #google-chrome-devtools
#язык JavaScript #google-chrome #google-chrome-расширение #обратный звонок #google-chrome-devtools
Вопрос:
Я пытаюсь создать небольшой искатель в качестве расширения chrome. Как это работает: Откройте новое окно или вкладку. Выполните поиск в Google / Google News / YouTube по заданным ключевым словам. Храните информацию о результатах в небольшой базе данных
Я впервые создал и протестировал функции с помощью popup.html. Там это работает идеально.Вы нажимаете на кнопку, и все страницы посещаются, а результаты сохраняются в базе данных. Но я хочу запустить программу, ничего не нажимая сначала. Вот почему я перенес его в background.js. Там он также работает, но только в том случае, если открыта консоль Service Worker / DevTool. Только тогда он запускается полностью.
Я был бы признателен за любой полезный ответ.
const keywords = [ "Keyword1", "Keyword2", // ... "Keyword13" ]; chrome.runtime.onStartup.addListener(() =gt; { chrome.tabs.onUpdated.addListener(loadingWindow); openWindow(); }); // Opens new Window or Tab with the correct URL function openWindow() { chrome.tabs.onUpdated.addListener(loadingWindow); if (runs == 0) { chrome.windows.create({ url: getUrl(keywords[runs]), type: "normal" }, newWindow =gt; { window_id = newWindow.id; }); } else { chrome.tabs.update(tab_id, { url: getUrl(keywords[runs]) }); } } // Wait to load the new tab function loadingWindow(tabId, changeInfo, tab) { if (changeInfo.status === 'complete' amp;amp; tab.status == 'complete' amp;amp; tab.windowId == window_id) { tab_id = tabId; console.log(tab.windowId); chrome.tabs.onUpdated.removeListener(loadingWindow); chrome.tabs.sendMessage(tab.id, { text: source }, doStuffWithDom); } }; // Get information from content script -gt; payload and then send to database function doStuffWithDom(domContent) { let payload = {... } var data = new FormData(); data.append("json", JSON.stringify(payload)); fetch(".../store.php", { method: "POST", body: data }); crawlDone(); } // open new window / tab or close the open window function crawlDone() { runs ; if (runs lt; keywords.length) { openWindow(); } else if (runs == keywords.length) { chrome.windows.remove(window_id); } };
Ответ №1:
Я переключился на манифест версии 2. Тогда я мог бы включить в Background.js через Background.html, которая также продолжается до конца.