Получение окна текущей страницы с помощью низкоуровневого API Firefox SDK

Я создаю расширение Firefox для добавления некоторых функций к определенным веб-страницам. Мне нужно проверить, существуют ли некоторые элементы, и выделить их, поэтому я использую xpath, чтобы проверить и найти их. Я знаю об управлении вкладками и контентом через вкладки и порты, но мне действительно нужно использовать низкоуровневый API и делать это без портов. Дело в том, что я не знаю, как получить текущее открытое окно вкладки (я также могу открыть вкладку, но не получаю окно). Я уже пытался открыть вкладку и:

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

Я видел много методов для получения разных видов окон, но не нашел объяснения различий. Например. Окно Chroe, окно XUL, окно NSI, базовое окно... Мне просто нужно окно документа текущей веб-страницы.

Любые разъяснения приветствуются. Заранее спасибо,


person gal007    schedule 03.05.2016    source источник


Ответы (1)


Мне просто нужно было прослушать другое событие вкладки:

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();
}
person gal007    schedule 04.05.2016