【发布时间】:2015-09-11 17:20:51
【问题描述】:
我正在尝试在这里测试此代码。如果我尝试加入,此代码会“阻止”某些 URL。
//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'
];
var redir_obj = {
'www.facebook.com': 'data:text,'+ escape('url_blocked would have went to facebook')
}
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();
}
}
startup()
在 Firefox 的暂存器中,我收到此错误:
/*
Exception: ReferenceError: Cu is not defined
@Scratchpad/1:2:1
*/
控制台没有错误。
有人知道这是什么错误吗??
我读过 Firefox 不能很好地处理常量,但这段代码有时工作有时不工作。
也有人可以帮我修复它,让它可以一直工作吗?
【问题讨论】:
-
至于它有时工作或有时不工作,我们需要您提供更多关于它如何不工作的信息(例如,当它工作/不工作时控制台中显示的内容)?使用您提供的信息,很容易看出为什么会收到报告的错误,但这只是对您所看到的内容的猜测。不幸的是,鉴于您的问题中有“Cu 未定义”错误,任何进一步的问题都应该是一个新问题。问题应尽可能集中在一个特定问题上。见How to Ask。
-
@Mayken 如果暂存器运行的范围没有将 Cu 定义为 const,它可能第一次对他有用。所以第二次运行会出错
标签: firefox firefox-addon firefox-developer-tools scratchpad