【发布时间】:2015-09-08 20:52:34
【问题描述】:
我无法在我的插件和我的附加脚本之间进行通信。 PageMod 的附加事件有效,但它不会将我的 getElements 事件发送到我的列表获取器。如何正确使用port.emit 方法?谢谢!
index.js(插件)
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)
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);
});
【问题讨论】:
-
通讯没问题。将
openLists更改为$('div').find('div'),您会看到。您一定还有其他问题,与您的正则表达式有关,或者 - 更有可能 - 使用了错误的选择器。
标签: javascript jquery firefox-addon firefox-addon-sdk