Идиоматическое додзё, которое делает то же самое, что и YAHOO.util.Event.onContentReady? - PullRequest
3 голосов
/ 25 октября 2011

Я хочу начать манипулировать элементом DOM, как только он станет доступен, чтобы минимизировать время, в течение которого он может появиться в своем первоначальном состоянии на экране. Я знаю, что в YUI вы бы использовали YAHOO.util.Event.onContentReady, и я почти уверен, что вы будете использовать bind в jQuery. Я новый додзё, и я не уверен: что такое «путь додзё» для этого?

ОБНОВЛЕНИЕ: я специально не хочу ждать загрузки всей страницы (которая смехотворно перегружена данными; одна только разметка потенциально может быть МБ или более). Я хочу немедленно начать поиск элемента в DOM и начать обработку, как только он там появится, не дожидаясь ALL разметки для загрузки, анализа и вставки в DOM - что может занять относительно много времени. Я хочу начать смотреть на DOM и приступить к работе, как только этот крошечный фрагмент будет там. Учитывая это ограничение, разве dojo.ready не подходит? Насколько я понимаю, он ожидает готовности всего DOM, аналогично onDOMReady.

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

Самый точный способ внедрения функциональности после добавления элемента DOM в дерево - это , который требует, чтобы он был расположен прямо под ним в разметке. Это выглядит менее сексуально, чем что-то вроде onContentReady, но onContentReady - это всего лишь механизм опроса, который может в конечном итоге выполнить ваш обратный вызов примерно в то же время, что и domready, во всяком случае, еще долго после того, как соответствующее поддерево DOM готово для сценариев.

Браузеры могут довольно быстро собрать дерево DOM. А с помощью решения опроса, такого как onContentReady, вы замедляете сборку / рендеринг страницы, выполняя код, который ищет целевой элемент (-ы) каждые несколько миллисекунд.

Я бы придерживался, чтобы ваши были в нижней части , или, если нужно, поместите код "must-run-now-damnit" в после требуемой разметки.

Я не знаком с API-интерфейсом dojo, поэтому не могу ответить на ваш конкретный вопрос относительно dojo, если приведенное выше не поможет.

(отредактировано, чтобы экранировать ведущие теги <, чтобы они отображались) </p>

2 голосов
/ 25 октября 2011

dojo.addOnLoad . Существует также более новый псевдоним dojo.ready.

примечание: Функция добавления при загрузке также ожидает загрузки всех необходимых модулей, в дополнение к ожиданию готовности к DOM

1 голос
/ 25 октября 2011

dojo.addOnLoad() - это то, что вы хотите. См. документацию .

Обратите внимание, что dojo.ready() - это просто псевдоним для этого метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...