Вопрос или проблема
https://addons.mozilla.org/en-US/firefox/addon/gather-from-tabs/
Я хочу запустить этот код на каждой вкладке в Chrome и указать количество слов в заголовке каждой вкладки.
/* Подсчет слов */
(() => {
const words = document.body.innerText.split(/\s+/).length;
document.title = "(" + words + ") " + document.title;
return words + " " + document.location.href + "\n";
})()
Ответ или решение
Для реализации функциональности, описанной в вашем запросе, необходимо использовать подход, который позволит запускать JavaScript-код на всех открытых вкладках в браузере Chromium. Поскольку расширение "Gather from Tabs" специально создано для Mozilla Firefox, его нельзя напрямую использовать в Chromium. Однако, мы можем создать аналогичное расширение для Chrome, которое будет выполнять желаемый код.
Создание Расширения для Chrome
-
Структура Расширения
Создайте папку для вашего расширения, например,word-counter
. В этой папке создайте следующие файлы:manifest.json
background.js
content.js
-
Файл manifest.json
Вmanifest.json
опишите ваше расширение:{ "manifest_version": 3, "name": "Word Counter", "version": "1.0", "permissions": ["tabs", "scripting"], "action": { "default_popup": "popup.html" }, "background": { "service_worker": "background.js" }, "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"] } ] }
-
Файл background.js
В этом файле вы можете управлять работой вашего расширения и отправлять сообщения контент-скриптам для выполнения кода:chrome.action.onClicked.addListener((tab) => { chrome.tabs.query({}, (tabs) => { tabs.forEach((tab) => { chrome.scripting.executeScript({ target: { tabId: tab.id }, function: countWords }); }); }); }); function countWords() { const words = document.body.innerText.split(/\s+/).length; document.title = `(${words}) ${document.title}`; console.log(`${words} ${window.location.href}\n`); }
-
Файл контентного скрипта (content.js)
Этот файл не требуется в данном случае, так как все действия будут выполняться из фона, но оставим его для будущих расширений.
Установка и тестирование расширения
- Откройте Chrome и перейдите на страницу
chrome://extensions/
. - Включите режим разработчика (Developer mode) в правом верхнем углу.
- Нажмите "Загрузить распакованное расширение" (Load unpacked) и выберите папку
word-counter
. - Теперь вы должны увидеть ваше расширение в списке. При нажатии на иконку, код будет выполнен на всех открытых вкладках.
Заключение
Создав свое расширение, вы сможете запускать код JavaScript на всех открытых вкладках в Chromium, который будет считать количество слов и обновлять название вкладки. Это позволяет добиться аналогичного результата, как и в случае с расширением для Firefox "Gather from Tabs". Успехов в ваших усилиях и не забывайте тестировать расширение на разных сайтах для проверки его корректной работы.