Связывание с определенной вкладкой/панелью содержимого с помощью Dojo

Я хочу перейти от ссылки на html-сайте к другому, где находится TabContainer с двумя разными вкладками.

У меня есть одна вкладка, выбранная по умолчанию (которую я хочу сохранить) в целевом html-файле.

Как мне поставить ссылку, чтобы это работало? Я нашел несколько документов в сети, но ничего не работает. Так что, вероятно, кто-то должен объяснить мне это глупым способом.

Вот целевой TabContainer:

<div dojoType="dijit.layout.TabContainer" region="center" tabStrip="true">
<div dojoType="dijit.layout.ContentPane" title="Contact" selected="true">
some text
</div>
<div dojoType="dijit.layout.ContentPane" title="Imprint" selected="true">
some text
</div>

Я хочу разместить ссылку для автоматического перехода к заголовку «Выходные данные».

Кто-нибудь может помочь?

Большое спасибо и всего наилучшего ТТП


person TTP    schedule 16.06.2011    source источник


Ответы (1)


Вы можете либо выбрать его из javascript, либо сгенерировать разметку для вкладки со своего сервера с атрибутом selected равным true (вам нужно будет установить другой атрибут false). Второй вариант зависит от вашей серверной технологии.

Для первого варианта добавьте идентификаторы в контейнер и вкладки и выберите вкладку после завершения загрузки страницы. Что-то типа:

<div id="tabContainer" dojoType="dijit.layout.TabContainer" region="center" tabStrip="true">
  <div id="tab1" dojoType="dijit.layout.ContentPane" title="Contact" selected="true">
    some text
  </div>
  <div id="tab2" dojoType="dijit.layout.ContentPane" title="Imprint" selected="false">
    some text
  </div>
</div>

<script>
  dojo.ready(function() {
    dijit.byId('tabContainer').selectChild(dijit.byId('tab2'));
  });
</script>

Если вы хотите динамически выбирать любую вкладку, вам нужно будет передать какой-то параметр в URL-адресе вашей страницы. Вы можете использовать параметр запроса (переменные после символа ?) или хеш-фрагмент (все, что после #). Параметр запроса можно прочитать как с сервера, так и из javascript. Фрагменты хеша, только из javascript.

Вы можете получить доступ к этим параметрам, просмотрев объект location. Например, используя хэш-фрагмент, вы бы сделали ссылку на свою страницу, например, http://host/page.html#imprint. Затем в теге <script> выше:

<script>
  dojo.ready(function() {
    if (location.hash == '#imprint') {
      dijit.byId('tabContainer').selectChild(dijit.byId('tab2'));
    }
  });
</script>

Параметры запроса также см. в разделе dojo.queryToObject().

person Gustavo Giráldez    schedule 16.06.2011
comment
Большое тебе спасибо! Это прекрасно работает, когда я помещаю код на сайт. Но я хочу перейти на вкладку с совершенно другого html-сайта. Могу ли я каким-то образом передать информацию сценарию? - person TTP; 17.06.2011
comment
Отредактировал ответ, чтобы включить ваш запрос. - person Gustavo Giráldez; 17.06.2011
comment
Большое спасибо! Это очень помогло и сэкономило мне огромное количество времени! Очень, очень полезно! Еще раз спасибо! - person TTP; 17.06.2011