Как получить ссылку на XUL iframe, который содержит окно - PullRequest
1 голос
/ 09 июля 2011

Из расширения Firefox есть способ получить XUL iframe / браузер, который содержит окно HTML контента.Примечание. Я не спрашиваю, как получить текущий браузер (gBrowser) или окно browser.xul.У меня есть дескриптор окна цели / содержимого HTML, я хочу проследить его в дереве XUL (до содержащего его элемента XUL).

получение ссылки на родителяiframe предполагает, что для HTML-фреймов вам нужно перебрать все фреймы, чтобы найти правильный, но мне интересно, есть ли какой-то специфичный для Firefox способ доступа к содержащему XUL-фрейму (из привилегированного кода / кода расширения).*

Ответы [ 3 ]

1 голос
/ 25 июля 2011
aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
       .getInterface(Components.interfaces.nsIWebNavigation)
       .QueryInterface(Components.interfaces.nsIDocShell)
       .chromeEventHandler

Обратите внимание, что в Firefox 3.6 и ранее он возвращает XPCNativeWrapper, который вы, вероятно, захотите развернуть.

0 голосов
/ 10 июля 2011

В расширении ваш код, как правило, уже выполняется в главном окне, поэтому вы просто используете gBrowser (см. https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_main_window).

Если ваш код работает в другом окне, посредник окна - ваш друг:https://developer.mozilla.org/en/Code_snippets/Tabbed_browser#From_a_dialog

0 голосов
/ 09 июля 2011

С точки зрения расширения, «окно» - это хромовое окно верхнего уровня Firefox, содержащее специальные элементы и для кнопок, панелей инструментов и т. Д. Вы можете увидеть их в DOM Inspector, если выперейдите в Файл -> Проверить документ Chrome -> (Окно браузера).Чтобы получить текущий фрейм страницы из расширения Javascript, используйте content .

. Для получения внешнего окна используйте window.parent или window.parent.top.Если внутренний документ имеет привилегию Chrome, возможно, вы можете проверить наличие специального атрибута или переменной на уровне окна.

...