首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firefox/Chrome插件socketio

Firefox/Chrome插件socketio
EN

Stack Overflow用户
提问于 2015-04-02 10:58:20
回答 1查看 392关注 0票数 0

我正在尝试将chrome扩展移植到firefox。我的Chrome扩展使用后台页面在插件启动时插入一个socketio连接。然后,在内容页中,我将事件发送到后台页面,通过socketio发出事件。所以我有一个连接,它被许多选项卡使用。

在FF中有可能创造出这样的东西吗?也许可以创建一个共享的工作人员作为插件,并通过选项卡与员工进行交流?有什么建议吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-10 17:19:12

您可以使用SDK的PageWorker api在Firefox中实现类似于后台页面的东西。下面是一个非常简单的例子:

index.js

代码语言:javascript
复制
var data = require("sdk/self").data;
var page = require("sdk/page-worker");
var re = new RegExp("^https://www.google.*");

let { ActionButton } = require("sdk/ui/button/action");

let button = ActionButton({
  id: "my-button-id",
  label: "Button Label",
  icon: {
    "16": "chrome://mozapps/skin/extensions/extensionGeneric.png",
    "32": "chrome://mozapps/skin/extensions/extensionGeneric.png"
  },
  onClick: function(state) {
    main();
  }
});

var worker;

function main() {

  let contentURL = 'https://www.google.ca/';
  if (worker) {
    worker.contentURL = contentURL;
  }

  worker = page.Page({
    include: re,
    contentURL: contentURL,
    contentScriptWhen: "ready",
    contentScriptFile: data.url('worker.js')
  });

  worker.port.on('fromWorker', (m) => {
    console.log("got message", m);
    worker.port.emit('toWorker', true)
  });
}

worker.js

代码语言:javascript
复制
console.log("worker> attached...");
self.port.on('toWorker', function(message) {
  console.log("worker>", message);
});
self.port.emit("fromWorker", "message from content worker: "+ [document.location, document.title].join(', '));

如果希望与加载到页面中的脚本进行交互,则需要通过postMessage,请参阅这些文档以获得更多帮助。将内容脚本代理到页面中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29411248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档