Наблюдатель за загрузкой страницы в пользовательском браузере xul:
В своем расширении Firefox я создаю элемент xul: browser. Я хочу иметь наблюдателя, который перехватывает любые изменения URL во встроенном браузере и открывает URL в новой вкладке браузера (в главном браузере). Я также хотел бы, чтобы новые окна, порожденные окном xul: browser, открывались на вкладке вместо нового окна браузера.
Я создал наблюдателя, который работает, но я пока не знаю, как применить этого наблюдателя только к элементу 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;
}
};