Firefox SDK 页面-mod 不工作

Firefox SDK page-mod not working

我安装了以下扩展程序:EPUBReader and Google Translator。后者是使用 Firefox SDK 构建的,最初有一个 page-mod include: ["*"],因此它仅适用于 http 和 https URLs。我 mod 将该行修改为 include: ["*","file://*","about:*"] 以便它也可以处理本地文件和 "about:" 链接。

我添加 "about:*" 的原因是因为我想要这个扩展到我用 EPUBReader 阅读的 epub 书籍上的文字。 EPUBReader 生成 URL 类似 "about:epubreader?id=5" 的内容。问题是,Google 当我双击单词时,翻译器仍然不会翻译任何内容。这很有趣,因为每当我尝试打开一个看起来像 "about:whatever" 的假 "about:" URL 时,它都会起作用。我的意思是,您可以双击错误页面中的任何单词,它就会翻译。

我在此处粘贴页面-mod代码段:

var workers = [], content_script_arr = [];
pageMod.PageMod({ /* page */
  include: ["*","file://*","about:*"],
  contentScriptFile: [data.url("content_script/inject.js")],
  contentScriptWhen: "ready",
  contentStyleFile : data.url("content_script/inject.css"),
  onAttach: function(worker) {
    array.add(workers, worker);
    worker.on('pageshow', function() { array.add(workers, this); });
    worker.on('pagehide', function() { array.remove(workers, this); });
    worker.on('detach', function() { array.remove(workers, this); });
    content_script_arr.forEach(function (arr) {
      worker.port.on(arr[0], arr[1]);
    });
  }
});

帮助任何人??

您可以从

开始
include: /.*/,

page-mod 添加到每个 URL,并查看罪魁祸首是否在 include 中。如果这解决了问题,您可以进一步缩小范围。

它应该可以解决问题,因为 "*" 只匹配 httpftphttps URLS。参见 https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern#Wildcards

但也许 inject.js 文件需要包含在可公开访问的 URL 中,然后将其发送给翻译人员...