Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№107-05-2014 11:49:25

webstoker
Участник
 
Группа: Members
Зарегистрирован: 22-02-2014
Сообщений: 6
UA: Firefox 29.0

Объясните новичку. Tabs

Во всех программах мозилла, реализован механизм вкладок, с контентом внутри.
Это и новые окна браузера, и новые письма, и календарь, и даже вкладка с дополнениями. Везде контент разный. А внешний вид механизма вкладок одинаковый.

Хочу реализовать такой же в своей программе на XULRUNNER. Однако человеко понятной документации на русском языке не нашел, как все это сделано. Это Tab, Browser, или tabbrowser. ? Или все вместе?  Из элементов по умолчанию я так и не смог сделать что то похожее.

Подскажите из чего это (механизм вкладок)  сделано и как это настроить.

Необходимо:
1. Вкладка по умолчанию, ( с кнопкой закрыть на ней) + кнопка добавления новой вкладки.
2. При нажатии на кнопку показать новую вкладку с размещенной на ней консолью ( или менеджером дополнений)


Заранее спасибо.

Отсутствует

 

№207-05-2014 16:02:15

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Объясните новичку. Tabs

В простейшем виде делается через <tabbox>:
https://developer.mozilla.org/en-US/doc … l/Tabboxes
Но если нужны вкладки с кнопками, то уже сложнее, в Firefox это сделано через

Выделить код

Код:

.tabbrowser-tab {
  -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tab");
}

То есть переопределяется внешний вид и поведение у <tab>'ов.
Дальше в каждую <tabpanel> помещается <browser>.

Но если доступен <tabbrowser> (что вряд ли – там chrome://browser/content/tabbrowser.xml, а не chrome://global/content/...), можно приспособить и его.

Добавлено 07-05-2014 16:05:45
Собственно, <tabbrowser>, используемый в Firefox – это надстройка над <tabbox>'ом, только еще <tabs> расположены отдельно, а не внутри.
Вот из view-source:chrome://browser/content/tabbrowser.xml#tabbrowser:

Выделить код

Код:

<binding id="tabbrowser">
    <resources>
      <stylesheet src="chrome://browser/content/tabbrowser.css"/>
    </resources>

    <content>
      <xul:stringbundle anonid="tbstringbundle" src="chrome://browser/locale/tabbrowser.properties"/>
      <xul:tabbox anonid="tabbox" class="tabbrowser-tabbox"
                  flex="1" eventnode="document" xbl:inherits="handleCtrlPageUpDown"
                  onselect="if (event.target.localName == 'tabpanels') this.parentNode.updateCurrentBrowser();">
        <xul:tabpanels flex="1" class="plain" selectedIndex="0" anonid="panelcontainer">
          <xul:notificationbox flex="1">
            <xul:hbox flex="1" class="browserSidebarContainer">
              <xul:vbox flex="1" class="browserContainer">
                <xul:stack flex="1" class="browserStack" anonid="browserStack">
                  <xul:browser anonid="initialBrowser" type="content-primary" message="true"
                               xbl:inherits="tooltip=contenttooltip,contextmenu=contentcontextmenu,autocompletepopup,selectpopup"/>
                </xul:stack>
              </xul:vbox>
            </xul:hbox>
          </xul:notificationbox>
        </xul:tabpanels>
      </xul:tabbox>
      <children/>
    </content>
    ...

Отредактировано Infocatcher (07-05-2014 16:05:45)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]