2

我正在编写一个使用上下文菜单页面模块模块的 Firefox 插件。

当上下文是输入控件时,此插件会在上下文菜单中添加一个新菜单项。单击菜单项时,我请求服务器获取一些数据并将结果推送到page-mod正在使用的内容脚本。

由于某种原因,onAttach函数没有被调用。控制台中没有错误。我不确定为什么它没有被调用。这就是我正在做的事情。

var data = require("self").data,
    contextMenu = require("context-menu"),
    request = require("request").Request;

var workers = [];
var pageMod = require("page-mod");
pageMod.PageMod({
    include: '*',
    contentScriptWhen: 'ready',
    contentScriptFile: [data.url("jquery-1.8.2.min.js"), data.url("varnam.js")],
    onAttach: function(worker) {
        console.log("onAttach");
        workers.push(worker);
        worker.on("detach", function() {
            var index = workers.indexOf(worker);
            if (index >= 0) workers.splice(index, 1);
        });
    }
});

解决此问题的任何帮助都会很棒。完整代码可在此处获得。

4

1 回答 1

8

当 url 模式以(或只是)一个星号开头时,它会与具有http,https和的方案的 url 匹配ftp

由于您的测试页面位于数据目录中,因此其 url 方案为resource. 这就是没有触发 PageMod 的原因。

您可以通过执行类似的操作来添加测试页 url

var varnam = pageMod.PageMod({ 
// blah blah
});

varnam.include.add(data.url("test.html"));
于 2012-12-09T16:31:48.453 回答