Передача сообщений между страницей к расширению

Так что у меня есть скрипт, который не выполняется на веб-странице, работает только в расширении,

document.getElementById("test").addEventListener("click", function () {
        var e = document.getElementById("exe");
        var strUser = e.options[e.selectedIndex].value;
        if (strUser == "note") {
            chrome.extension.connectNative('note');
        }
        if (strUser == "calc") {
            chrome.extension.connectNative('calc');
        }
    });

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

1 ответ

Решение

chrome.extension неудивительно, что он доступен только для кода расширения. Кстати, вы должны действительно использовать chrome.runtime.connectNative, но то же самое относится.

У вас есть 2 широких варианта:

  1. Добавьте скрипт контента на страницу, позвольте ему добавить прослушиватель кликов, а затем передайте запрос на фоновую страницу. Сценарии содержимого могут взаимодействовать с вашим фоном, но не могут выполняться connectNative самих себя.

  2. Если это для фиксированного веб-сайта, вы можете заставить сам сайт отправлять сообщение на фоновую страницу расширения. Это использует externally_connectable и объясняется здесь.

Опять же, вам понадобится фоновый сценарий (для сценария события) для обработки запросов на запуск чего-либо, поскольку это единственное, что (1) достаточно привилегировано для этого, (2) всегда доступно для обработки запроса.

Другие вопросы по тегам