在firefox扩展中使用port.emit和port.on

 书友32368660 发布于 2023-02-06 17:11

有人可以解释在firefox扩展中使用port.on和port.emit的上下文吗?

从官方文档我想象这应该工作:

//main.js
var someData = "Message received"; 

self.port.emit("myMessage", someData);
self.port.on("myMessage", alert(someData));

但我明白了

错误:未定义self.

将此附加到定义的对象后,如下所示:

var self = require("sdk/self"); 
self.port.emit("myMessage", someData);

我明白了

错误:未定义端口.

canuckistani.. 5

如果使用page-mod模块将内容脚本注入网页,则可以在内容脚本中使用self.port与main.js进行通信.例如:

main.js:

var data = require('sdk/self').data;

require('sdk/page-mod').PageMod({
  include: ["*"],
  contentScriptFile: [data.url('cs.js')],
  attachTo: ["existing", "top"],
  onAttach: function(worker) {
    worker.port.emit('attached', true);
  }
});

cs.js:

self.port.on('attached', function() {
  console.log('attached...');
});

有关相关文档,请从此处开始:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

1 个回答
  • 如果使用page-mod模块将内容脚本注入网页,则可以在内容脚本中使用self.port与main.js进行通信.例如:

    main.js:

    var data = require('sdk/self').data;
    
    require('sdk/page-mod').PageMod({
      include: ["*"],
      contentScriptFile: [data.url('cs.js')],
      attachTo: ["existing", "top"],
      onAttach: function(worker) {
        worker.port.emit('attached', true);
      }
    });
    

    cs.js:

    self.port.on('attached', function() {
      console.log('attached...');
    });
    

    有关相关文档,请从此处开始:

    https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

    2023-02-06 17:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有