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;
}
};