从Chrome到非特权代码

时间:2015-12-16 12:45:08

标签: javascript firefox firefox-addon firefox-addon-sdk

我正在尝试在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的新手。

1 个答案:

答案 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