【问题标题】:communicate from addon main.js to page-worker从插件 main.js 与 page-worker 通信
【发布时间】:2016-09-20 16:56:44
【问题描述】:

我是社区和开发插件的新手。

我正在尝试从 1 个页面工作人员获取一些数据并将其发送到主插件,然后将更多数据包含到其中,然后将其发送给其他页面工作人员。

我能够完成第一部分,即来自 page-worker 的 postMessage 并在主插件中接收。

var self = require("sdk/self");
var pageWorker = require("sdk/page-worker");
var getdata = pageWorker.Page({
    contentScript: "self.postMessage(document.body.innerHTML);",
    contentURL: "http://itildemo.servicedeskplus.com/sdpapi/request?INPUT_DATA={%22operation%22:{%22details%22:{%22status%22:%22open%22,%22from%22:0,%22limit%22:500,%22filterby%22:%22Unassigned_System%22}}}&OPERATION_NAME=GET_REQUESTS&TECHNICIAN_KEY=D357605B-E4B5-4892-A7C2-62CA556CB5A8&format=json" (http://itildemo.servicedeskplus.com/sdpapi/request?INPUT_DATA={%22operation%22:{%22details%22:{%22status%22:%22open%22,%22from%22:0,%22limit%22:500,%22filterby%22:%22Unassigned_System%22}}}&OPERATION_NAME=GET_REQUESTS&TECHNICIAN_KEY=D357605B-E4B5-4892-A7C2-62CA556CB5A8&format=json%27) ,
    contentScriptWhen: "ready"
});
getdata.on("message", function(e) {
    console.log(e);
});

现在可以从这里发布消息到其他页面工作者 喜欢:

getdata.on("message",function(e){
     insertdata.postMessage(e);
});
var insertdata = pageWorker.Page({
     onMessage: function(e){
     console.log(e);
     }
}); 

【问题讨论】:

  • 你有什么问题?

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


【解决方案1】:

是的,很有可能从 main.js 上的一名工作人员接收消息并将其发送给其他工作人员。这里我们有两个工人。现在,一旦从 pagemod 工人那里收到消息,它就会发送给其他工人。

var wsWorker = require('sdk/page-worker').Page({
    contentURL: "websocket.html",
    contentScriptFile : ["websocket.js"]
});


var pageMod = require("sdk/page-mod").PageMod({
  include: ['*'],
  contentStyleFile: [self.data.url('fillStyle.css')],
  contentScriptFile: ["content.js"],
  contentScriptWhen: "start",
  attachTo: ["top", "frame", "existing"],
  onError : function(error) {
      console.log('ERROR Ocurred :- ',error);
  },
  onAttach: function(worker) {
                 worker.port.on("worker_msg",function(msg_of_other_worker){
  //send this message to another worker.
   wsWorker.port.emit("some_action",{tabUrl : msg_of_other_worker});
});
            }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多