Каков высокий уровень между браузером и вкладкой? - PullRequest
0 голосов
/ 15 сентября 2011

Работая над расширением Firefox, я в конечном итоге столкнулся с возможностью получить selectedBrowser или selectedTab при использовании tabbrowser.

Не зная определения высокого уровня двух элементов (у tab есть документ? Тогда почему у tab нет свойства браузера?)

Точно так же я нашелмне интересно, если бы я связывал свойства с тем, что делает пользователь в настоящее время, если бы мне было лучше использовать gBrowser.selectedBrowser.MYSPECIALPROPERTY против gBrowser.selectedTab.MYSPECIALPROPERTY.

Мне обычно требовались оба browser, потому что в нем были методы, которые я хотелработать и потому, что мне было проще захватывать браузеры и копаться с ними, чем захватывать вкладки и многое другое с ними, но мне не нравится идея предпочитать одну над другой без полного понимания причин.

Мне также стало бы интересно узнать, как я могу перейти от selectedBrowser к selectedTab или наоборот, если предположить, что хотя бы один из этих переходов даже имеет смысл.

Эти вопросы несколько разделимы,но мне не хватает ключапонимание высокого уровня, поэтому я не уверен, что смогу задать один из этих вопросов и получить ответ, который прояснил бы мою путаницу.

1 Ответ

1 голос
/ 15 сентября 2011

A <tabbrowser> является специализированной версией <tabbox>. Обычно <tabbox> - это набор вкладок и связанных панелей вкладок. Здесь вкладка - это фактически заголовок вкладки, который вы нажимаете, чтобы переключиться на конкретную вкладку, панель вкладок - это то, что отображается затем (это контейнер для содержимого вкладки). Между вкладками и панелями вкладок прямого сопоставления нет, просто они имеют одинаковый индекс в соответствующем узле контейнера. По крайней мере, это общая идея, которая немного усложняется тем фактом, что вкладки могут быть связаны с конкретной панелью явно через атрибут linkedpanel .

Теперь <tabbrowser> имеет элемент <browser> в каждой из своих вкладок. Но он использует те же элементы <tab>, что и обычные <tabbox>. Поскольку и <tab>, и <browser> могут использоваться за пределами <tabbrowser>, вы не найдете никаких специальных API для них. Этот вид API доступен только в <tabbrowser>.

Чтобы получить браузер для заголовка определенной вкладки, вы можете использовать tabbrowser.getBrowserForTab(). Движение в обратном направлении является более сложным (и обычно ненужным). Если вам это действительно нужно, вы можете использовать tabbrowser.getBrowserIndexForDocument(), чтобы получить индекс браузера. Затем вы можете получить соответствующую вкладку с помощью tabbrowser.tabs.getItemAtIndex().

Просто повторю это: обычно вам захочется работать с <browser> элементами. Нет особых оснований смотреть на заголовки вкладок (если только вы не хотите изменить их порядок или что-то в этом роде).

...