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, который вызывал медленную загрузку страницы. На этой патичной странице я запустил скрипт сразу после ссылки. Это решение, может быть, не самое лучшее, но оно работает. Надеюсь это поможет.

Другие вопросы по тегам