0

Ich erstelle eine Firefox-Erweiterung, um bestimmten Webseiten bestimmte Funktionen hinzuzufügen. Ich muss überprüfen, dass einige Elemente vorhanden sind und sie hervorheben, also verwende ich Xpath, um sie zu überprüfen und zu lokalisieren. Ich weiß über die Manipulation von Tabs und den Inhalt über Tabs und Ports, aber ich muss wirklich die Low-Level-API verwenden und es ohne Ports tun. Die Sache ist, ich weiß nicht, wie man das aktuell geöffnete Tab-Fenster bekommt (ich kann auch den Tab öffnen, aber ich bekomme das Fenster nicht). Ich habe versucht bereits einen Tab zu öffnen und:Das Fenster der aktuellen Seite mit dem Low-Level-API des Firefox SDK öffnen

tabs.open({ 
      url: url, 
      onOpen: function onOpen(tab) { 

       // get the XUL tab that corresponds to this high-level tab 
       var lowLevelTab = viewFor(tab); 
       var browser = tab_utils.getBrowserForTab(lowLevelTab); 
       var doc = browser.contentDocument; 
       console.log(doc); //THIS IS AN EMPTY DOC 

       // get the most recent window. This give me a XUL window, and I can't sucessfully execute eval on that... 
       var win = utils.getMostRecentBrowserWindow(); 
}}) 

ich Sawa Menge von Methoden für verschiedene Arten von Fenstern abrufen, aber ich bin nicht die Erklärung über die Unterschiede zu finden. Z.B. Chroe-Fenster, XUL-Fenster, NSI-Fenster, Basisfenster ... Ich brauche nur das Dokumentfenster der aktuellen Webseite.

Jede Klärung ist willkommen. Vielen Dank im Voraus,

Antwort

0

ich für ein anderes Register Ereignis nur erforderlich hören:

onReady: function onOpen(tab) { 

       var content = utils.getMostRecentBrowserWindow().content; 
       var domInstances = content.document.evaluate(me.getTemplateXpath(), content.document, null, 4, null); 
       var res = domInstances.iterateNext();     
       while (res) { 
        console.log(res); 
        res.style["background-color"] = "orange"; 
        res = domInstances.iterateNext(); 
       } 
       callback(); 
} 
Verwandte Themen