如何从内容脚本发送消息到面板?

我的firefox插件中的main.js,page-mod的内容脚本和面板的内容脚本之间的消息传递存在一些问题。我将Chrome扩展代码传递给Firefox插件。

  • 这些js文件的顺序是什么? 我试图找出与控制台,但日志刷新。

  • 我已将Chrome特定的API传输到firefox插件API,但我不能确定其他本机消息js代码应该更改。现在,我将向您展示该示例。 在main.js

    var pmworker = []
    var pagemod = PageMod({
       include: ['*'],
       contentScriptWhen: 'start',
       contentScriptFile: [data.url('pm-content.js')],
       onAttach: function(worker) {
           worker.port.on('message',
           function(data) {
                switch (data.type) {
                case 'some type':
                   do something;
                   break;
                }
            });
            worker.on('detach',function() {
               detachWorker(this, pmworker);
            });
            pmworker.push(worker);
        }
    });   
    
    
    var panel = require("sdk/panel").Panel({
      width: 322,
      height: 427,
      contentURL: data.url("panel.html"),
      include:["http://*/*","https://*/*"]
    });   
    
    panel.on('message', function(messagedata) {
        switch(messagedata.type) {
          case 'some type':
            panel.port.emit("something");
            break;
        } 
     });
    
  • pm-content.js

    var sendInfoToFrame = function(){
        var frameWindow = document.getElementById(iframeId).contentWindow;
        var infoMsg = {type:"some type",content:something};
        frameWindow.postMessage(infoMsg, "*");
    }
    

    panel.htmlhead包含一个带script标签的panel.js

    function addParentListener(){
        window.addEventListener("message",function (e) {
            var message=e.data;
            if(message.type="some type"){
                //do something
            }
        },false);
    }
    

    所以消息可以通过contentWindow.postMessagepm-content.js发送到panel.jspanel.js使用window.addListener来接收msg(这些来自panel.js代码和pm-content.js是从chrome扩展代码复制的,我不会更改它)?

    相反,msg是如何从panel.js发送到内容脚本的? 我也从chrome复制相同的代码,我不知道它是否正确。 示例代码是:在panel.js中:

    function sendSomeMessage(value){
        var message = {type : "sometp",value: value};
        window.parent.postMessage(message, "*");
    }
    

    以及pm-content.js的接收代码:

       function addMessageListener() {
        window.addEventListener("message",function(e) {
                var message = e.data;
                if (message.type == null) {
                        return;
                }
                var msgType = message.type;
                switch (msgType) {
                case "sometp":
                        //do something
                }
        }, false);
       }
    

    我运行的代码,我得到很多错误。所以我应该改变这些消息代码和如何? 谢谢。


    这些js文件的顺序是什么? 我试图找出与控制台,但日志刷新。

    使用网络面板而不是控制台

    我已将Chrome特定的API传输到firefox插件API,但我不能确定其他本机消息js代码应该更改。现在,我将向您展示该示例。 在main.js中:

    使用或分析现有的工具,如同类似的问题:

    跨浏览器扩展API?

    链接地址: http://www.djcxy.com/p/45749.html

    上一篇: How to send message from content script to panel?

    下一篇: Relative image url in content script in Firefox Add