Очередная обнова хрома и расширения

Доброго всем.

Самый заботливый браузер, насладившись прошлогодними стенаниями пользователей после блокировки Flash'а, с начала 2023 года приготовил нам новую радость: будут заблокированы все расширения с версиями манифеста ниже 3.

Что это значит для рядового пользователя? Что определенная часть расширений, которые авторы уже не обновляют, либо не захотят обновлять под новый движок, просто исчезнет из магазина расширени Хрома, и перестанет работать.

Относиться к этому можно по-разному, кто использует мало расширений, или пользуется только стандартными от самих гуглов - тот молодец, тому повезло. Верю вам на слово, и настоятельно прошу воздержаться от бурного выражения радости в комментариях, что вас, по вашему мнению, это никак не коснется.


Я же, так уж сложилось, пользуюсь рядом весьма удобных для меня, и экономящих кучу времени расширений, которые отлично справляются со своими функциями - несмотря на посление обновления несколько лет назад. И я был бы рад и продолжать ими пользоваться, без посика стильных, модных, молодежных, занимающих в разы больше памяти и соответственно тормозящих браузер.

В этой связи, вопрос как от рядового пользователя: ввиду того, что по сути ничего нового и хорошего при обновлении Хрома последние пару лет не наблюдается, можно ли:
а) заблокировать обновления Хрома на компьютере, "заморозив текущую версию" (что решит вопрос уже установленным Хромом - но лишь отсрочит проблему, поскольку рано или поздно придется Винду переустанавливать - и Хром с ней)

б) скачать где-то оффлайн установщик текущей версии Хрома, чтобы иметь возможность его ставить без подключения к Инету и блокировать обновы по пункту а)

И второй вопрос, уже как от криворукого разработчика расширений для собственного пользования, примитивных - но с успехом автоматизирущих ряд текущих задач и экономящих время.

Переписал я сам манифест под новые требования:
0) поменял цифирку в manifest_version на 3
1) перенес hosts из раздела "permissions" в отдельный host_permissions

2) переименовал browser_action в просто action
3) вместо background:scripts прописал "background": "service_worker":"background.js"

И вот с этого места и начались вопросы.

Ну, что бэкскрипт теперь не может быть persistent - это жаль, почтим его память вставанием, и понятно, что разработчики малопопулярных расширений просто не станут заморачиваться с переписыванием под эту бодягу, и эти расширения окончательно умрут... Жаль.

Ну, и что два бэкскрипта нельзя делать (загружая сначала библиотечные функции, а потом движок) - я сначала огорчился, но потом нашел новую для себя возможность включения скриптов по синтаксису:

importScripts('./test2.js');
и огорчение ушло.

Ну, что в Воркере этом, как оказалось, для получения сообщений от скрипта страницы вместо
chrome.extension.onMessage.addListener(function(request, sender, callback)
использовать другой синтаксис
onmessage = function(e){
то боженька с ним.

Но как, собственно, теперь это сообщение передать??? Простые тестовые исходники ниже.

Исходник №1 (manifest.json ):

{ "version": "1.0",
"background": { "service_worker": "background.js"},
"host_permissions": [ "*://test.com/*" ],
"content_scripts": [
"js": [ "driver.js"],
"matches": [ "https://test.com/*", "http://test.com/*" ],
"run_at": "document_end" } ],
"name": "test mini-bot",
"description": "",
"permissions": [ "contextMenus", "tabs", "storage" ],
"action": {
"default_icon": { "32": "32.png", "64": "64.png", "128": "128.png", "256": "256.png" },
"default_popup": "popup.html" },
"icons": { "16": "16.png", "64": "128.png", "128": "128.png", "256": "256.png", "32": "32.png" },
"manifest_version": 3}

Исходник №2(background.js)

onmessage = function(e){ console.log("background.onMessage()", e);}
console.log("background.js loaded");
Исходник №3(driver.js)
console.log("Test started!");
chrome.extension.sendMessage({ type: 'download', url: 'url', filename: 'filename' });

в этом варианте пишет, что такой функции нет (как радостно-то!)
chrome.runtime.sendMessage({ type: 'download', url: 'url', filename: 'filename' });

в таком варианте сообщение просто в бэк не доходит.

Ошибок при этом никаких не выдается, обе отладочные строки ("Test started!" и "background.js loaded") - я в консоли вижу.


Читал, как пользоваться стильными, модными, молодежными сервис-воркерами, наткнулся на такой пример:

var myWorker = new Worker("worker.js");
myWorker.postMessage([first.value,second.value]);
Но бэкскрипт у меня уже загружен, как это должно вообще работать?

Засада в том, что в 100500 исходников, которые я просмотрел, я натыкался на пример, как получать ссылку на бэкскрипт и просто вызваать в нем функции. Но она потерялась, и как ни странно это звучит - я не могу найти этот исходник ни по истории браузера, ни гуглением. Мистика какая-то.

И при этом я осознаю, что вопрос лоховской ) Поэтому - онанимно.

Спроси Пикабу

3.8K постов5.5K подписчиков

Добавить пост

Правила сообщества

Подпишись на наше сообщество, если тебе понравилась публикация. Или добавь нас в игнор, если нет.

Правила:
1. Задавая вопрос в посте, используйте открытые вопросы (те, которые не предполагают коротких ответов «Да/Нет»)
2. Создавая пост-ответ, убедись, что делаешь это ответом, иначе нам придется вынести пост за несоответствие тематике соо.
3. Подборкам, созданным на основе вопросов пользователей, тут самое место.
4. Посты с призывами поделиться историей, цифрами (пример), картинками, рекомендациями, тоже относятся к тематике соо (если будет перегиб, то пересмотрим данный пункт).
4. В сообществе не место для политики и вопросам по сайту/модерации. Для этого есть профильные сообщества.
5. Не допускаются оскорбления авторов только за наличие вопроса.
6. В сообществе допускается размещение подборок из ответов на вопросы в других постах или постах самого сообщества, только убедитесь, что до вас этого никто не сделал.
7. Предложения по доработке правил и направлению развития сообщества принимаются 24/7.