我已安装以下扩展程序:EPUBReader和Google 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]);
});
});
有人能发现问题吗?
由于
答案 0 :(得分:0)
仅黑色星号仅捕获 web 页面。试试about:epubreader*