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