Javascript 如何为Firebug创建扩展

Javascript 如何为Firebug创建扩展,javascript,firefox-addon,firebug,Javascript,Firefox Addon,Firebug,我需要扩展firebug以使用从网页中提取的链接(当从网页中的任何链接开始下载时)将其发送到另一台机器,在那里下载。我打算用firebug为我提取这个链接。如果有其他方法可以从浏览器中获取此信息,我将不胜感激。 实际上,使用事件来检测http请求是不好的,firefox xul语言的强大功能使您能够检测所有浏览器的请求/响应,然后您可以从请求/响应头中决定需要哪些链接: 您可以在网络面板上使用“http观察”按钮 以下是mozilla MDN中“http观察”的链接[https://develo

我需要扩展firebug以使用从网页中提取的链接(当从网页中的任何链接开始下载时)将其发送到另一台机器,在那里下载。我打算用firebug为我提取这个链接。如果有其他方法可以从浏览器中获取此信息,我将不胜感激。

实际上,使用事件来检测http请求是不好的,firefox xul语言的强大功能使您能够检测所有浏览器的请求/响应,然后您可以从请求/响应头中决定需要哪些链接:
您可以在网络面板上使用“http观察”按钮
以下是mozilla MDN中“http观察”的链接[https://developer.mozilla.org/en/Setting_HTTP_request_headers][1]
-这里还有一个简单的“http观察”示例


上面回答observer服务调用时的输入错误应为:
Components.classes[“@mozilla.org/observer service;1”].getService(Components.interfaces.nsIObserverService)


观察员服务使用参考:

您正在寻找一种自定义类型的下载管理器行为。我不知道Firebug和它有什么关系。你可以使用Firebug来帮助开发扩展,但这听起来不像是需要扩展Firebug的东西。您可能希望进行完全扩展或使用GreaseMonkey。如果不是firebug,那么有没有一种方法可以在用户单击要下载的链接时检测从何处开始下载的链接。您可以使用DOM API将侦听器附加到相关元素(或文档对象)并查看事件源。
// first create observerService component as a property into your extension javascript object
    var myExtension = {   observerService:Components.classes["@mozilla.org/observerservice;1"].getService(Components.interfaces.nsIObserverService),
        init:function(){
            // in the init function setup the observe service and set witch javascript object is the listener for http response for example "this"
            this.observerService.addObserver(this,"http-on-examine-response", false);
            this.observerService.addObserver(this,"http-on-examine-cached-response", false);
        },
        observe: function(aSubject, aTopic, aData){ // the observe function
            if (aTopic == "http-on-examine-response" || aTopic == "http-on-examine-cached-response"){
                var httpChannel = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
                var URI = httpChannel.originalURI.spec;                    
                if (aSubject.loadFlags & httpChannel.LOAD_INITIAL_DOCUMENT_URI){ // this detect if the response is primery request 
                    var contentType = httpChannel.getResponseHeader("content-type"); // check the heder content-type 
                    if (contentType == "what ever you want"){ // you can check if it zip/html/xml ...etc
                //do what ever you want
                }
                }
            }
        }   
    }