Подключение content script в декларативном стиле

134
12 февраля 2022, 09:40

Пытаюсь достучаться из расширения chrome к dom страницы. Для этого создал два js-файла. Один - для расширения, другой - контент-скрипт. Пытаюсь сделать, как тут. Мой manifest.json выглядит так:

{
    "manifest_version": 2,
    "name": "Sotis Unlock",
    "description": "Анализатор страницы в sotis",
    "version": "1.0.0",
    "icons": {"128": "images/mini_logo.png"},
    "browser_action": {
        "default_icon": "images/icon.png",
        "default_popup": "popup.html"
    },
    "content_scripts":[
        {
            "matches": [
                "http://vedmark.ru/",
                "https://*.ru/*",
            "http://*.ru/*"
            ],
            "css" : [],
            "js": ["js/content_script.js"]
        }
    ]
}

В matches по сути я пытаюсь охватить все сайты зоны .ru. content_script.js -это тот самый скрипт, который должен отрабатывать внутри dom. Мой тестовый popup.html выглядит так:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">  
        <title>Sotis</title>
       <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">

        <style>
            window.onload = function(){

                contextBtn.onclick = function(){
                    alert('i');
                    chrome.runtime.sendMessage('GetcontextMnu');
                }

                linksBtn.onclick = function(){
                    chrome.runtime.sendMessage('Turn_links');
                }   
            }
        </style>
    </head>
    <body>
        <button id="contextBtn">Вернуть контекстное меню</button>
        <button id="linksBtn">Получить адреса</button>
    </body>
</html>

И content_script.js, который лежит отдельно в папке /js:

chrome.runtime.onMessage.addListener(
    function(request,sender,callback){
        if (request=='GetcontextMnu') GetcontextMnu();
        else if (request == 'Turn_links') Turn_links();
    }
);

function GetcontextMnu(){
    alert(0);
}


function Turn_links() {
    alert(1);
}   

Событие onclick для contextBtn срабатывает. Далее я ожидаю, что внутри content_script сработает вот этот метод:

chrome.runtime.onMessage.addListener(
    function(request,sender,callback){
        if (request=='GetcontextMnu') GetcontextMnu();
        else if (request == 'Turn_links') Turn_links();
    }
);

Но ничего не происходит. И во вкладке content scripts пусто

Что я делаю не так? content script не подключился или в самом коде ожидании сообщений что-то не то?

READ ALSO
Datatables-AltEditor ajax и select2 ajax

Datatables-AltEditor ajax и select2 ajax

Использую datatables-alteditor с select2

97
Перебор массива и вывод ключа

Перебор массива и вывод ключа

Есть select с записанными значениями из массиваНужно с помощью перебора вывести в какой части массива находится значение select

130
jQuery 1.9.0 - jQuery UI DatePicker

jQuery 1.9.0 - jQuery UI DatePicker

Создаю форму с кучей форм ввода даты datepickerов (вызов датепискеров onclick)

89
CallBack с фрейма в родитель

CallBack с фрейма в родитель

Заранее прошу прощения за странный вопрос

109