【发布时间】:2015-06-25 11:24:05
【问题描述】:
我是 Firefox 扩展程序的新手,我希望您帮我打包一个我构建的扩展程序并将其发送给一些朋友进行测试。
我的扩展程序即将“阻止”某些 URL。这意味着如果有人尝试加入“facebook.com”,我的扩展程序应该将他重定向到“www.google.com”
代码如下。
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import('resource://gre/modules/Services.jsm');
var urls_block = [
//If URLs contain any of these elements they will be blocked or redirected,
// your choice based on code in observer line 17
'www.facebook.com',
'www.apple.com'
];
var redir_obj = {
'www.facebook.com': 'http://www.google.com/',
'www.apple.com': 'http://www.samsung.com'
}
var observers = {
'http-on-modify-request': {
observe: function (aSubject, aTopic, aData) {
console.info('http-on-modify-request: aSubject = '
+ aSubject + ' | aTopic = ' + aTopic + ' | aData = ' + aData);
var httpChannel = aSubject.QueryInterface(Ci.nsIHttpChannel);
var requestUrl = httpChannel.URI.spec.toLowerCase();
for (var i=0; i<urls_block.length; i++) {
if (requestUrl.indexOf(urls_block[i]) > -1) {
//httpChannel.cancel(Cr.NS_BINDING_ABORTED); //this aborts the load
//Can redirect with this next line, if don't want to redirect and
// just block, then comment this line and uncomment the line above:
httpChannel.redirectTo(Services.io.newURI(redir_obj[urls_block[i]],
null, null));
break;
}
}
},
reg: function () {
Services.obs.addObserver(observers['http-on-modify-request'],
'http-on-modify-request', false);
},
unreg: function () {
Services.obs.removeObserver(observers['http-on-modify-request'],
'http-on-modify-request');
}
}
};
function install() {}
function uninstall() {}
function startup() {
for (var o in observers) {
observers[o].reg();
}
}
function shutdown(aData, aReason) {
if (aReason == APP_SHUTDOWN) return;
for (var o in observers) {
observers[o].unreg();
}
}
非常感谢@Noitidart 的大力帮助。
所以我想为 Firefox 扩展打包此代码。 有人可以告诉我怎么做或任何例子吗?
非常感谢您抽出宝贵时间帮助我。
【问题讨论】:
-
作为一个简短的说明,你所拥有的看起来像一个 bootstrap.js 文件。按照 Makyen 的说法,但将您的代码用于 bootstrap.js。
-
我的荣幸。这里有一些压缩和安装引导插件的东西:addons.mozilla.org/en-US/firefox/addon/xpicompiler 这里有一些简单的例子:gist.github.com/Noitidart/9025999 这个要点的自述文件解释了很多
-
@Noitidart 再次伟大!是否可以通过网站使其在线更新?或者我应该对此提出另一个问题?
-
@SteliosM。很酷的人,我很确定你可以做到,但我不知道怎么做。我更喜欢将其上传到 addons.mozilla.org 并将可见性设置为私有以便其他人找不到它,然后将其作为下载链接分享到您的插件
-
@Noitidart 非常感谢一切! :)
标签: firefox firefox-addon firefox-addon-sdk firefox-developer-tools