2013-05-28 4 views
0

Сначала это может показаться странным вопросом, но вот моя проблема. Я разрабатываю веб-сайт, который на window.load вычисляет позиции div, поскольку он имеет подсветку события динамической прокрутки (DOM Ready является неправильным выбором для этого, поскольку изображения и контент еще не загружены, а позиции расчета div являются неверными, когда страница полностью реализована.) Локальные активы работают отлично и оптимизированы для производительности, но моя проблема заключается в том, что клиент хочет, чтобы социальные медиа включали, например, твиттер, а также кнопку facebook. Твиттер кажется очень быстрым, но Facebook занимает так много времени, и вы можете буквально отставать примерно на 20-30 секунд до того, как событие window.load будет готово, а это значит, что моя навигация затем отстает и не работает должным образом. Я не знаю, возможно ли это, но есть ли способ определить, когда загружаются все файлы локального JavaScript (они включены до закрытия тега body).Есть ли способ определить, загружены ли все локальные ресурсы JavaScript?

+1

Если window.load запускается «слишком поздно» из-за внешних плагинов, то не вставляйте HTML-версию этих плагинов, а добавляйте их динамически через JS после загрузки страницы. – CBroe

+0

Спасибо @CBroe - так вы говорите, когда событие window.load готово, а затем загрузите скрипты с помощью JS? Это кажется логичным :) хотя все сценарии запускаются через JS, возможно, я могу обернуть их в оболочку window.load? – Halcyon991

ответ

1

Возможно. Все JavaScript на странице выполняется в том порядке, в котором браузер сталкивается с ней. Поэтому, когда вы добавляете элемент <script> в качестве последнего элемента внутри элемента <body> (т. Е. В нижней части страницы), этот код будет работать после, все остальные сценарии сценария выполнены. Кроме того, в это время DOM будет завершен (дальнейший HTML-код не будет обрабатываться), за исключением случаев, которые могут выполнять обратные вызовы (таймеры, onload-обработчики).

Итак, что вы можете попробовать, это поставить элемент между вашим кодом и кодом из Facebook. Но это означает, что ваш DOM не будет готов.

Лучшее решение для загрузки кода Facebook на задний план onload. Это означает, что вся остальная часть страницы есть, и Facebook может занять свое время.

Смежные вопросы