Firefox SDK页面模块不工作

Firefox SDK page-mod not working

本文关键字:工作 模块 SDK Firefox      更新时间:2024-06-04

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

我之所以添加"about:*",是因为我想将其扩展到我使用EPUBReader阅读的epub书籍上的单词。EPUBReader生成一个类似于"about:EPUBReader?id=5"的URL。问题是,当我双击单词时,谷歌翻译仍然不会翻译任何内容。这很有趣,因为每当我尝试打开一个看起来像"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中,然后发送给翻译器。。。