Un observador para cargas de página en un xul personalizado: navegador

En mi extensión de Firefox estoy creando un elemento xul: browser. Quiero tener un observador que intercepte cualquier cambio de URL en el navegador integrado y lo abra en una nueva pestaña del navegador (en el navegador principal). También me gustaría que se abrieran nuevas ventanas generadas por la ventana del navegador xul :. en una pestaña en lugar de una nueva ventana del navegador.

He creado un observador que funciona, pero todavía no sé cómo aplicar ese observador solo al elemento xul: browser.

function myFunction(){
   var container = jQuery("#container")[0];
   var new_browser_element = document.createElement('browser');
   container.appendChild(new_browser_element);

   var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
   observerService.addObserver(myObserver, "http-on-modify-request", false);
}


var myObserver = {
   observe: function(aSubject, aTopic, aData){
      if (aTopic != 'http-on-modify-request'){
         aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
         // alert(aSubject.URI.spec);
        // Now open url in new tab
      } 
   },

   QueryInterface: function(iid){
      if (!iid.equals(Components.interfaces.nsISupports) &&
      !iid.equals(Components.interfaces.nsIObserver))
      throw Components.results.NS_ERROR_NO_INTERFACE;

      return this;
   }
};

Respuestas a la pregunta(1)

Su respuesta a la pregunta