Наблюдатель за загрузкой страницы в пользовательском браузере 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;
   }
};

Ответы на вопрос(1)

Ваш ответ на вопрос