2013-06-26 2 views
0

Я прочитал через Message Passing Documentation и попытался его использовать в своем коде следующим образом:Передача сообщений между выносными Chrome и содержание сценария

contentscript.js:

var buttonEl = document.getElementById("activateBtn"); 

if (buttonEl) { 
    buttonEl.addEventListener("click", function() { 
     alert("activateBtn clicked! " + chrome.runtime.sendMessage); 

     chrome.runtime.sendMessage({button: buttonEl}); 
    }); 
} 

backgroundscript. ЯШ:

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { 
    console.log("onMessage:", request); 
}); 

Цель состоит в том, чтобы позволить сценарию содержимого вводиться на страницу (указанную в файле manifest.json), а затем запускаться. Скрипт работает нормально - отображается сообщение alert message, но сообщение не отправляется. Или не получено. В любом случае, эта кнопка содержит идентификатор, который мне нужно каким-то образом перейти к моему привилегированному коду.

Когда я запускаю код в консоли разработчика расширения, я получаю сообщение просто отлично, поэтому приемная часть работает.

Любые указания по проблеме?

Благодарим вас за время. :)

ответ

2

Если вы проверяете консоль инжектированных страницы, вы должны увидеть что-то вроде

TypeError: Converting circular structure to JSON 

Это происходит потому, что вы пытаетесь передать объект HTML через JSON. Попробуйте передать только идентификатор кнопки и посмотрите, работает ли она тогда.

+0

Спасибо, в этом была проблема. Вы также знаете, где я могу видеть такие ошибки? Когда я открываю консоль страницы, где инжектируется скрипт контента, я не вижу никаких ошибок. – ashiso

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