Firefox SDK pagemod无法使用xml文档

时间:2015-03-01 18:22:21

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

我已安装以下扩展程序:EPUBReaderGoogle Translator

Google Translator是使用Firefox SDK构建的。其 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]);
    });
  }
});

正如您所看到的,它应该将javascript绑定到所有文档,其URL以 about:* 开头。 EPUBReader在 about:epubreader?id = 5 等URL中加载文档,因此应该注入来自Google Translator的javascript。但它没有。

是否因为EPUBReader以XML格式打开文档而导致问题? (也有自己的Doctype语句)。如果是这样,我该如何解决这个问题?


我想解决问题的一种方法是使用标签转换 pagemod 。现在的问题是插件不再显示,所以我可能做错了。这是代码:

var { attach, detach } = require('sdk/content/mod');
var { Style } = require('sdk/stylesheet/style');

var style = Style({
  uri: data.url('content_script/inject.css')
});

var workers = [], content_script_arr = [];
tabs.on('ready', function(tab) {
  var worker = tab.attach({
  contentScriptFile: [data.url("content_script/inject.js")]
  });
  attach(style, tabs.activeTab);
    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)

仅黑色星号仅捕获 web 页面。试试about:epubreader*