2015-12-16 3 views
0

Я пытаюсь передать сообщения между сценарием рабочего стола Firefox Addon и javascript веб-страницы. Я нашел this, в котором объясняется, как отправить сообщение сценарию и получить ответ, но я хочу просто отправить сообщение с хром на непривилегированный код. Я уже пробовал использовать следующие два метода.Firefox Addon SDK сообщение от chrome до непривилегированного кода

Отправляется от работника, прикрепленного к панели, и я хочу получить сообщение в каком-то javascript, который я ввел на страницу DOM.

Чтобы отправить

var element = document.createElement("MyExtensionDataElement"); 
    element.setAttribute('detail', "hi"); 
    document.documentElement.appendChild(element); 
    console.log("created the event", element); 

    var evt = document.createEvent("Events"); 
    evt.initEvent("MyExtensionEvent1", true, false); 
    element.dispatchEvent(evt); 

Чтобы получить

document.addEventListener("MyExtensionEvent", function(e) { 
     myExtension.myListener(e); 
    }, false, true); 

А также с помощью простого CustomEvent

Чтобы отправить

var e = new CustomEvent("event",{detail:"string here"}); 
window.dispatchEvent(e); 

Получать

window.addEventListener("event",function(e){ 
     console.log(e.detail); 
    }); 

Первое отправляет сообщение, но оно не получено, а второе не может даже создать CustomEvent. Я был бы признателен за любую помощь в этом вопросе и извиняюсь, если вопрос кажется дилетантским. Im новое для Firefox Addon Development.

ответ

0

Ваш получить неправильно, вам нужно использовать добавить 4-ый аргумент и установить его попробовать:

Так

window.addEventListener("event",function(e){ 
    console.log(e.detail); 
}); 

Переход к

window.addEventListener("event",function(e){ 
    console.log(e.detail); 
}, false, true); 

Смотрите эту тему - initCustomEvent pass data for method doesn't work anymore