В чем разница между tabbrowser, браузером, gBrowser?
при разработке расширений Firefox , Я смотрел на это довольно долго и я нахожу их очень запутанно.
посмотреть этой ссылка. Они используют термин browser
во многих отношениях, которые, несмотря на объяснение, оставляют реальные различия контекстов без внимания.
мне интересно, может ли кто-нибудь предоставить нисходящую картину всего этого.
если есть n
различные окна Firefox (в откройте, как получить доступ к содержимому XUL каждого окна (например, адресной строке, полосе прокрутки и т. д.), HTML-контент и как эти термины входят в картину там?
редактировать: Прочитав удивительный ответ Кашифа и посмотрев на инспектора дома, я остаюсь с этими вопросами:
-
tabbrowser
имеет свойство с именемcontentDocument
. Это относится к HTML-код документ под ним. Но!--2--> может содержать несколько документов (в каждом вешалка.) Имеет ли смысл иметьcontentDocument
собственность подtabbrowser
? Не должно ли оно существовать подbrowser
? (browser
подtabbrowser
и содержит только один объект HTML-документ). - где объект? Не элемент XUL, а элемент HTML, который все веб-разработчики используют вне контекста chrome. Тот, который содержит объект документа HTML непосредственно.
- к
tab
элементы (прямоугольники пользовательского интерфейса, представляющие открытые вкладки в Firefox) и их контекстные меню, необходимо использоватьdocument
в настоящее времяbrowser.xul
верно? Они не подчиняютсяtabbrowser
не так ли? Это то, что я мог видеть от инспектора дома.
EDIT:
1 ответов
Обозреватель
браузер-это общий термин, который означает программное обеспечение,которое можно использовать для просмотра интернета, например Firefox, Chrome, Opera и т. д.
кстати, <browser>
также является элементом в XUL. Это компонент, который может загружать веб-страницы, делать http-запросы и отвечать соответствующим образом. В Firefox, каждая вкладка связана с одним <browser>
.
и gBrowser
<tabbrowser>
также является элементом в XUL. Он может содержать несколько вкладки, каждая из которых связана с одним <browser>
. Так в окне Firefox, если вы исключаете панели инструментов, заголовок, боковую панель и addonbar, все остальные примерно <tabbrowser>
если у вас есть оверлей для браузера.xul в chrome ваших расширений.манифест и включить скрипт, наложение будет применяться к каждому окну firefox и скрипт будет работать для каждого окна firefox независимо. Скрипт будет иметь доступ к переменным, определенным и инициализируется браузером.ксул. Одним из таких переменная gBrowser
, который указывает на <tabbrowser>
в текущем окне Firefox (OS). Таким образом, каждое окно Firefox будет иметь одно <tabbrowser>
что можно получить с помощью gBrowser
переменная в скрипте наложения.
если вы посмотрите на документация <tabbrowser>
, это очень полезно, например, добавление новой вкладки, поиск выбранного браузера и т. д.
Окно Firefox
окно firefox фактически основано на браузер.xul. Этот файл содержит все элементы что вы видите в окне firefox. (например, панели инструментов, urlbar, интерфейс с вкладками и т. д.). Одним из таких элементов является <tabbrowser>
элемент с id=content. The <tabbrowser>
элемент содержит 1 или несколько панелей, каждая из которых содержит <browser>
. Поэтому, если в окне firefox открыты 3 вкладки, будет 3 <browser>
элементы.
Доступ К Элементам Окна:
когда файл javascript включен из наложения xul, он, как говорят, выполняется в"контексте chrome". В контексте хром, window
относится к окну firefox верхнего уровня и document
относится к документу xul (т. е. браузеру.xul)
такой скрипт имеет доступ к каждому элементу документа XUL. Вы можете, например, использовать document.getElementById("urlbar-container")
для доступа к urlbar текущего окна. Вы должны ознакомиться с инспектор DOM это может помочь вам в поиске идентификаторов элементов и понимании документа XUL.
contentDocument в tabbbrowser
посмотреть код tabbrowser.xul:
<property name="contentDocument"
onget="return this.mCurrentBrowser.contentDocument;"
readonly="true"/>
я надеюсь, что это самоочевидно :). Это может не иметь смысла, но очень удобно в коде. Если бы это свойство было названо как activeContentDocument
, это было бы более понятно.
MXR очень удобно найти ответы на такие вопросы.
окне объекта:
посмотреть <browser>
код:
<property name="contentWindow"
readonly="true"
onget="return this._contentWindow || (this._contentWindow = this.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow));"/>
но я надеюсь, что у кого-то еще может быть лучше объяснение.
tabbrowser и вкладки
<tabbrowser>
и <tabs>
работать вместе. The <tabs>
элемент, что вы имеете в виду прямоугольник, содержащий открытые вкладки. Dom инспектор показывает, что:
<tabbrowser id="content" tabcontainer="tabbrowser-tabs" ...
и
<tabs id="tabbrowser-tabs" tabbrowser="content" ...
таким образом, оба зависят друг от друга, хотя это два разных элемента XUL.