2015-08-05 1 views
-1

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

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 через сообщение, но я не могу этого сделать. У меня нет никаких ссылок. Eq

+0

Извините, непонятно, что вы имеете в виду под этим вопросом. Вы пытаетесь выполнить это в расширении? В чем же проблема? – Xan

+0

Нет, я хочу выполнить его с помощью кнопки на веб-странице, например, в моем локальном хосте, когда я нажимаю кнопку на странице без нажатия на расширение. Я хочу выполнить его, но он не работает. Это мой последний вопрос, связанный с этим одним из http: // stackoverflow .com/questions/31745405/native-messaging-extension-connectnative-not-working-on-localhost? noredirect = 1 # comment51496569_31745405 – Esclade

+0

@Xan это то, что я пытаюсь – Esclade

ответ

0

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

У вас есть 2 широкие возможности:

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

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

Опять же, вы будете нуждаться в background script (на event script) для обработки запросов для запуска что-то, так как это единственное, что оба (1) достаточно привилегию, чтобы сделать это, (2) всегда доступны обрабатывать запрос.

+0

извините за мое незнание, но что такое фиксированный сайт? разница между .extension и .runtime Я предполагаю, что расширение выполняется только при нажатии на расширение и время выполнения при открытии страницы? В моем скрипте контента будет запрашиваться код расширения на странице фона, можно ли отправлять функцию из фона в скрипт контента с запросом? – Esclade

+0

«Исправлено» означает «адрес, известный заранее, а не какой-либо сайт», потому что «externally_connectable» требует шаблона соответствия с доменом второго уровня в нем. Некоторые функции дублируются в 'extension' и' runtime', но функции обмена сообщениями в 'extension' считаются устаревшими - вы должны использовать' runtime'. – Xan

+0

И я бы рекомендовал прочитать [Документы по сообщениям] (https://developer.chrome.com/extensions/messaging), чтобы узнать, что они могут сделать. Идея заключалась бы в том, чтобы отправить сообщение, содержащее требуемый параметр, например. '{" exec ": strUser}' и решить, что делать на стороне фона. – Xan

Смежные вопросы