我正在尝试在Firefox Addon工作者脚本和网页的javascript之间传递消息。我发现this解释了如何向脚本发送消息并获得回复,但我想简单地将消息从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。如果这个问题看起来很业余,我会很感激你对此事的任何帮助并道歉。我是Firefox Addon Development的新手。
答案 0 :(得分: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