Я выполняю внешний скрипт, используя <script>
внутренний <head>
.
Теперь, когда скрипт выполняется до загрузки страницы, я не могу получить доступ <body>
, среди прочего. Я хочу выполнить JavaScript после того, как документ был «загружен» (HTML полностью загружен и находится в оперативной памяти). Есть ли какие-либо события, которые я могу подключить при выполнении моего скрипта, которые сработают при загрузке страницы?
javascript
html
dom-events
pageload
Вспышка
источник
источник
document.onload=
не навязчиво en.wikipedia.org/wiki/Unobtrusive_JavaScriptРазумно переносимый, неструктурированный способ заставить ваш скрипт установить функцию для запуска во время загрузки:
источник
Имейте в виду, что загрузка страницы имеет более одного этапа. Кстати, это чистый JavaScript
"DOMContentLoaded"
Это событие вызывается, когда исходный HTML-документ полностью загружен и проанализирован , не дожидаясь окончания загрузки таблиц стилей, изображений и подкадров. На этом этапе вы можете программно оптимизировать загрузку изображений и CSS на основе пользовательского устройства или скорости полосы пропускания.
Выполняется после загрузки DOM (до img и css):
«Нагрузка»
Совершенно другое событие, load , следует использовать только для обнаружения полностью загруженной страницы . Это невероятно популярная ошибка - использовать load, когда DOMContentLoaded будет гораздо более уместным, поэтому будьте осторожны.
Ожидает после того, как все загружено и проанализировано:
Ресурсы MDN:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
MDN список всех событий:
https://developer.mozilla.org/en-US/docs/Web/Events
источник
window.onload = ...
подумать, что мой сценарий будет ждать, пока все не будет полностью загружено, прежде чем запускаться, но, похоже, онwindow.onload
действительно ведет себя какdocument.addEventListener("DOMContentLoaded", ...
, тогда как наwindow.addEventListener("load", ...
самом деле все ждет полной загрузки. Я бы подумал, чтоwindow.onload
должно быть эквивалентно,window.addEventListener("load", ...
а неdocument.addEventListener("DOMContentLoaded", ...
?? Я получил тот же результат в Chrome и FF.Вы можете поместить атрибут "onload" внутри тела
Или, если вы используете JQuery, вы можете сделать
Я надеюсь, что это ответит на ваш вопрос.
Обратите внимание, что $ (window) .load будет выполняться после отображения документа на вашей странице.
источник
Если сценарии загружены в пределах
<head>
документа, то возможно использоватьdefer
атрибут в теге сценария.Пример:
С https://developer.mozilla.org :
источник
Вот скрипт, основанный на отложенной загрузке js после загрузки страницы,
Где я могу разместить это?
Что оно делает?
Вот пример кода выше - отложенный рендеринг JS
Я написал это на основе отложенной загрузки концепции gavascript pagespeed google, а также из этой статьи Отложить загрузку javascript
источник
Посмотрите на перехват
document.onload
или в jQuery$(document).load(...)
.источник
Рабочая Fiddle на
<body onload="myFunction()">
источник
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
источник
Если вы используете JQuery,
$(function() {...});
эквивалентно
$(document).ready(function () { })
или другая короткая рука:
$().ready(function () { })
Посмотрите, какое событие запускает JQuery $ function ()? и https://api.jquery.com/ready/
источник
посмотрите здесь: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
источник
Иногда на более сложных страницах я обнаруживаю, что не все элементы загружены к временному окну. Запущена загрузка. Если это так, добавьте setTimeout до того, как ваша функция задержится на мгновение. Это не элегантно, но это простой взлом, который хорошо рендерится.
становится ...
источник
Просто определите,
<body onload="aFunction()">
что будет вызвано после загрузки страницы. Ваш код в скрипте , чем приложенaFunction() { }
.источник
Этот код работает хорошо.
Но
window.onload
метод имеет различные зависимости. Так что это может не работать все время.источник
Использование библиотеки YUI (мне это нравится):
Портативный и красивый! Однако, если вы не используете YUI для других вещей (см. Документацию), я бы сказал, что его не стоит использовать.
NB: чтобы использовать этот код, вам нужно импортировать 2 скрипта
источник
Существует очень хорошая документация о том, как определить, загружен ли документ с использованием Javascript или Jquery.
Используя нативный Javascript, этого можно достичь
Это также можно сделать внутри интервала
Например, Мозилла
Использование Jquery Чтобы проверить только готов DOM
Чтобы проверить, все ли ресурсы загружены, используйте window.load
источник
Используйте этот код с библиотекой jQuery, это будет прекрасно работать.
источник
.ready () работает лучше всего для меня.
.load () будет работать, но не будет ждать загрузки страницы.
У меня не работает, ломает следующий встроенный скрипт. Я также использую jQuery 3.2.1 вместе с некоторыми другими вилками jQuery.
Чтобы скрыть загрузку моих сайтов, я использую следующее:
источник
JavaScript
то же самое для jQuery:
ПРИМЕЧАНИЕ. - Не используйте приведенную ниже разметку (поскольку она перезаписывает другие объявления того же типа):
источник
Как говорит Даниэль, вы можете использовать document.onload.
Различные фреймворки javascript, однако (jQuery, Mootools и т. Д.) Используют пользовательское событие 'domready', которое, я думаю, должно быть более эффективным. Если вы разрабатываете с использованием javascript, я настоятельно рекомендую использовать фреймворк, он значительно увеличит вашу производительность.
источник
источник
Мой совет использовать
asnyc
атрибут для тега script, который поможет вам загрузить внешние скрипты после загрузки страницыисточник
defer
вместо этого, как упомянутое @Daniel Price?использовать функцию самостоятельного выполнения onload
источник
onload
обработчики, используя этот подход. Вместо этого вы должны добавить слушателя.