首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PageMod的Firefox插件附加事件未发出事件

PageMod的Firefox插件附加事件未发出事件
EN

Stack Overflow用户
提问于 2015-09-09 04:52:34
回答 1查看 50关注 0票数 2

我无法在我的插件和我的附加脚本之间通信。PageMod的attach事件可以工作,但是它不会将我的getElements事件发送到我的列表获取方法。如何正确使用port.emit方法?谢谢!

index.js (插件)

代码语言:javascript
复制
var pageMod = require('sdk/page-mod');
var data = require("sdk/self").data;

pageMod.PageMod({
  include: "*.workflowy.com",
  contentScriptFile: [data.url("jquery-1.11.3.min.js"), data.url("list-getter.js")], 
  onAttach: function(worker) {

    // For some reasong the worker doesn't emit?
    worker.port.emit("getElements");

    worker.port.on("gotElements", function(times) {
      function printValues(el) {
        console.log(el);
      }
      times.forEach(printValues);
    });
  }
});

list-getter.js (contentScriptFile)

代码语言:javascript
复制
self.port.on("getElements", function() {
  var timeRegex = /\bam|pm/g
  var openLists = $('.project.open').find('.content');
  var times = []
  for (var i = 0; i < openLists.length; i++) {
    if (openLists[i].innerHTML.match(timeRegex)) {
      times.push(openLists[i].innerHTML)
    }
  }
  self.port.emit("gotElements", times);
});
EN

回答 1

Stack Overflow用户

发布于 2015-09-10 03:10:04

我犯了一个令人难以置信的错误。确保将希望由数据对象加载的任何内容都放在数据文件夹中。我有两份拷贝,换错了一份。谢谢。

index.js

代码语言:javascript
复制
var pageMod = require('sdk/page-mod');
var data = require("sdk/self").data;

pageMod.PageMod({
  include: "*.workflowy.com",
  contentScriptFile: data.url("list-getter.js"), 
  onAttach: function(worker) {

    worker.port.emit("getElements");

    worker.port.on("gotElement", function(times) {

      function printValues(el) {
        console.log(el);
      }
      times.forEach(printValues);
    });
  }
});

list-getter.js

代码语言:javascript
复制
self.port.on("getElements", function(openProject) {
  var times = []
  var timeRegex = /\b([1-9]pm|[1-9]am|1[0-2]am|1[0-2]pm)/g;
  var openLists = document.querySelectorAll('.content');
  for (var i = 0; i < openLists.length; i++) {
    if (openLists[i].innerHTML != "") {
      if (openLists[i].innerHTML.match(timeRegex)) {
        times.push(openLists[i].innerHTML);
      }
    }
  }
  self.port.emit("gotElement", times);
)};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32467040

复制
相关文章

相似问题

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