Firefox SDK page-mod无法正常工作

时间:2015-02-26 22:40:43

标签: javascript firefox firefox-addon firefox-addon-sdk

我已安装以下扩展程序:EPUBReaderGoogle Translator。后者使用Firefox SDK构建,最初只有page-mod include: ["*"],因此它仅适用于http和https URL。我将该行修改为include: ["*","file://*","about:*"],以便它也可以使用本地文件和“about:”链接。

我添加"about:*"的原因是因为我希望这个扩展到我用EPUBReader阅读的epub书籍上的文字。 EPUBReader产生的URL类似于“about:epubreader?id = 5”。问题是,当我双击单词时,Google Translator仍然不会翻译任何内容。这很有趣,因为无论何时我尝试打开一个虚假的“about:”URL,看起来像“about:whatever”,它都有效。我的意思是,您可以双击错误页面中的任何单词并进行翻译。

我在这里粘贴了page-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]);
    });
  }
});

帮助任何人??

1 个答案:

答案 0 :(得分:0)

你可以从

开始
include: /.*/,

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

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

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