В чем разница между 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.