Ранний аппендЧилд ад в топ-3 браузеров - PullRequest
3 голосов
/ 01 августа 2010

Я пытаюсь лениво загрузить javascripts, но не могу заставить его работать надежно.Мои страницы загружаются довольно быстро, и я хочу сохранить их в таком состоянии, поэтому я не собираюсь использовать тайм-аут для задержки загрузки.Помимо document.readyState, как мне убедиться, что DOM действительно готов к модификации?

Метод I:

  1. poll readyState

  2. скрипт createElement

  3. src = url

  4. appendElement для заголовка

Результаты:

IE8: всегда прерывается

FF3: загружается в первый раз, прерывается каждый второй

Chrome: загружается в первый раз, прерывается каждый

Метод II: ( lazyload , включенный в тег head)

  1. нагрузка с lazyload

Результаты:

IE8: всегда прерывается

FF3: работает

Chrome: загружается впервые, прерывает все остальные

Ответы [ 2 ]

2 голосов
/ 01 августа 2010

Если вы поместите свой тег <script> чуть выше тега </body>, вы можете делать большинство вещей с DOM, не вызывая при этом каких-либо ошибок, т. Е. Все, что выше тега <script>, обычно подходит для модификации. *

Однако, если вы ищете более надежное решение, вы можете добиться определенного прогресса, проверив, как основные библиотеки обнаруживают, готов ли DOM, вот для начала (jQuery): http://github.com/jquery/jquery/blob/master/src/core.js#L393

1 голос
/ 01 августа 2010

Javascript вряд ли можно использовать в кросс-браузерах без приличной структуры, которая поможет вам преодолеть различия.Вероятно, наиболее популярным сегодня является jquery, где на этого урока вы можете использовать $(document).ready()dojo, также довольно популярном, вы можете использовать addOnLoad .И так далее ... и если вы не используете какой-либо фреймворк, вы делаете жизнь слишком сложной для себя: сделайте себе одолжение и выберите понравившийся фреймворк JS! -)

...