Передача сообщений между страницей к расширению
Так что у меня есть скрипт, который не выполняется на веб-странице, работает только в расширении,
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 широких варианта:
Добавьте скрипт контента на страницу, позвольте ему добавить прослушиватель кликов, а затем передайте запрос на фоновую страницу. Сценарии содержимого могут взаимодействовать с вашим фоном, но не могут выполняться
connectNative
самих себя.Если это для фиксированного веб-сайта, вы можете заставить сам сайт отправлять сообщение на фоновую страницу расширения. Это использует
externally_connectable
и объясняется здесь.
Опять же, вам понадобится фоновый сценарий (для сценария события) для обработки запросов на запуск чего-либо, поскольку это единственное, что (1) достаточно привилегировано для этого, (2) всегда доступно для обработки запроса.