Проблема видимости и отображения

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

Обычно эта проблема решается за счет того, что изначально тело страницы делается невидимым, а затем, когда загрузка будет закончена, оно делается видимым. Реализуется этот прием очень просто: вам нужно определить стиль (или класс), указывающий, что тело страницы должно быть скрыто, например так: (body style="visibility:hidden;"). Только не забудьте добавить соответствующий вызов, который сделает страницу видимой в нужное время. Предположим, что невидимым было объявлено все тело страницы, тогда вызов dojo.style(dojo.body(), "visibility", "visible"), добавленный в dojo.addOnLoad, сделает страницу видимой. Вместо addOnLoad можно воспользоваться любой другой функцией обратного вызова, если по какимто причинам необходимо задержать отображение страницы до наступления некоторого события (например, в обработчике асинхронного события, который выполняет передачу данных некоторому виджету).

Следует заметить, однако, что контейнерные диджиты компоновки не всегда правильно реагируют, когда создаются в изначально невидимом состоянии.


Если вы обнаружите, что диджиты компоновки остаются скрытыми, когда они должны быть уже видимы, вам может потребоваться вручную вызвать метод resize(), чтобы принудительно заставить их отобразить свое содержимое. Исторически эта проблема часто наблюдалась при отображении диджитов компоновки внутри dijit.Dialog.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
AccordionContainer
BorderContainer
ContentPane
StackContainer
TabContainer

Вернуться в раздел: Dojo / Виджеты компоновки