Выполнение JavaScript на определенном веб-сайте с использованием расширения Chrome

#javascript #google-chrome-extension

Вопрос:

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

Событие onInstalled выполняется без проблем, но я не могу выполнить обновление для правильного запуска.

Вот все файлы:

hide.js

 chrome.runtime.onInstalled.addListener(() => {
    console.log('Extension initialized');
});

chrome.tabs.onUpdated.addListener(() => {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        var activeTab = tabs[0];
        var tabUrl = activeTab.url;
     });
     if(tabUrl.includes('website')){
        chrome.scripting.executeScript({target: {tabId: activeTab.id}, function: code()});
     }
});
function code(){
    console.log('code executed')
}
 

манифест.json

 {
    "manifest_version": 3,
    "name": "Hide",
    "version": "0.1",
    "background": {
        "service_worker": "hide.js"
    },
    "permissions": ["storage", "tabs", "scripting"]
}
 

Комментарии:

1. Если вы просто хотите запустить пользовательский JS, пользовательский скрипт может быть немного проще запустить прямо из коробки

2. @CertainPerformance большое спасибо, никогда не думал, что такое расширение может существовать. Я рассмотрю это, и хотя это может решить мою проблему, я все равно хотел бы, чтобы это расширение работало, просто ради обучения.

3. Есть две ошибки: 1) не используйте запрос, используйте параметры, переданные прослушивателю onUpdated , 2) Он асинхронный, поэтому вы должны использовать значение внутри обратного вызова. В любом случае, есть гораздо более простое решение, которое заключается в удалении фонового сценария и объявлении вместо него сценария содержимого .