Javascript перед загрузкой?
Есть ли какой-либо обработчик событий перед onLoad/onPageShow? Проблема с onLoad заключается в том, что если есть какие-либо изменения в отображении, страница будет отображаться без изменений, пока не будет полностью загружена, тогда скрипт будет запущен. Каков наилучший способ убедиться, что он запустится как можно скорее?
2 ответа
Если вы поместите операторы Javascript (а не определения функций) в <script>
тэг, они будут выполняться во время загрузки страницы - до того, как будет запущено событие onLoad.
<html>
<body>
<h2>First header</h2>
<script type="text/javascript">
alert("Hi, I am here");
document.write("<h3>This is Javascript generated</h3>");
</script>
<h2>Second header</h2>
</body>
</html>
Предостережение заключается в том, что вы не можете искать элементы по идентификатору, потому что эти элементы еще не были отрисованы, поэтому ваша способность изменять страницу таким образом ограничена.
Итог: возможно, не рекомендуется.
Что я обычно делаю в таких ситуациях:
- Сделайте части страницы, которые могут измениться, невидимыми (через
style="visibility:hidden;"
); - Сделайте так, чтобы onLoad запускал код Javascript, который изменяет страницу, а затем устанавливает видимость упомянутых частей в
visibility:visible
,
Простой ответ - разместить вызов функции после элемента DOM внутри тегов скрипта, внутри тела вашей страницы. У меня была проблема с использованием функции javascript для стилизации ссылок в меню навигации, однако у меня был элемент карты Google, который вызывал медленную загрузку страницы. На этой патичной странице я запустил скрипт сразу после ссылки. Это решение, может быть, не самое лучшее, но оно работает. Надеюсь это поможет.