Firefox SDK page-mod not working (1个答案)
3年前关闭。
我已经安装了以下扩展名:
EPUBReader和
Google Translator。
Google翻译是使用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绑定到所有以about:*开头的URL。 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]);
});
});
谁能发现问题?
谢谢