And*_*aev 2 javascript browser firefox firefox-addon google-chrome-extension
制作firefox插件的最简单方法是什么,它重复了这个chrome功能:
chrome.webRequest.onBeforeRequest.addListener(
function(info) {
if(info.url.indexOf("notifier") + 1){
return {redirectUrl: "https://domain.null/1.js"};
}
},
{
urls: [
"*://domain2.null/*"
],
types: ["script"]
}, ["blocking"]);
Run Code Online (Sandbox Code Playgroud)
我知道firefox中的nsIContentPolicy,但我不明白如何使用它.
所有的意见,建议和帮助将不胜感激
我已经确定了无重启扩展的问题.
阻止内容我们可以使用nsIContentPolicy作为Wladimir说.我们还可以使用windowListener(aWindow.gBrowser)将脚本注入页面.
例如,这种做法非常有效:https://github.com/jvillalobos/AMO-Admin-Assistant/blob/master/src/bootstrap.js
我认为现在没有重大的黑客攻击可以做到这一点.这是将添加到界面的错误765934的主题.一旦实现它,这样的代码应该工作:redirectTo() method
nsIHttpChannel
const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var observer = {
QueryInterface: XPCOMUtils.generateQI([
Ci.nsIObserver,
Ci.nsISupportsWeakReference
]),
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request" &&
subject instanceof Ci.nsIHttpChannel)
{
var uri = subject.URI;
if (uri.host == "domain2.null" && /\.js(\?|$)/.test(uri.path))
{
var redirectUri = Services.io.newURI("https://domain.null/1.js",
null, null);
subject.redirectTo(redirectUri);
}
}
}
};
Services.obs.addObserver(observer, "http-on-modify-request", true);
Run Code Online (Sandbox Code Playgroud)
供参考:Services.jsm,XPCOMUtils.jsm,观察者通知,nsIHttpChannel,nsIURI
归档时间: |
|
查看次数: |
878 次 |
最近记录: |