Question

Je suis en train en utilisant le code

// This is an active module of the goelvivek (8) Add-on
exports.main = function() {
  var httpRequestObserver =  
  {  
    observe: function(subject, topic, data)   
    { 
      if (topic == "http-on-examine-response") {  
        if(console)
          console.log(data);
      }  
    }  
  }; 
  var {Cc, Ci, Cr} = require("chrome");
  var observer = require("observer-service");   
  observerService = Components.classes["@mozilla.org/observer-service;1"].  
    getService(Components.interfaces.nsIObserverService);  
    observerService.addObserver(httpRequestObserver, "http-on-examine-response", false);
};

mais la ligne console.log(data); n'imprime quelque chose dans le journal de la console. pourquoi?

Était-ce utile?

La solution

En plus de la question a fait remarquer Nickolay, un besoin d'observateurs pour mettre en œuvre une fonction de QueryInterface() (généralement au moyen de XPCOMUtils.generateQI () ). Voici comment on pourrait le faire avec l'Add-on SDK:

var {Cc, Ci, Cr, Cu} = require("chrome");
var {XPCOMUtils} = Cu.import("resource://gre/modules/XPCOMUtils.jsm");
var httpRequestObserver =
{
  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
  ...
};

Cependant, puisque vous avez besoin déjà paquet observer-service , il serait plus facile de l'utiliser:

var observer = require("observer-service");
observer.add("http-on-examine-response", onHttpRequest);

function onHttpRequest(subject, data)
{
  ...
}

L'inconvénient de cette approche est que observer-service est un paquet interne et son API pourrait changer à l'avenir Add-on SDK versions.

Autres conseils

Est-ce l'extrait réel? Vous devriez voir une erreur au sujet Components étant non défini dans la console d'erreur. Soit obtenir de require('chrome') ou utiliser l'objet de require("observer-service").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top