Когда выполняются JavaScripts? - PullRequest
1 голос
/ 30 ноября 2009

Я сейчас спрашиваю себя, когда будут выполняться javascripts в заголовке страницы?

После того, как все содержимое загружено? Во время загрузки изображений? Перед загрузкой сайта?

Причина в том, что я хочу создать барьер, чтобы запретить пользователям доступ к сайту без javascript (это для внутреннего использования компанией, не вините меня за требование) - моя идея заключалась в создании сообщения div-error скрыт с помощью javascript и скриншота моей страницы, выделенных серым цветом, также скрыт, если javascript отключен.

Проблема в том, что такой скриншот может быть довольно большим с точки зрения размеров файла. Итак, при медленном соединении вам нужно было бы загрузить все изображение, прежде чем javascript его скрывает?!

Ответы [ 4 ]

4 голосов
/ 30 ноября 2009

Почему бы просто не вставить предупреждение "Вы должны иметь JavaScript" внутри тега <noscript>?

2 голосов
/ 30 ноября 2009

Javascript в теге script выполняется всякий раз, когда браузер видит его. Но это останавливает все другое выполнение и (возможно) загрузку. Итак, вы пытаетесь скрыть img в body, но поскольку тег script находится в head, он будет выполнен до загрузки img, поэтому не сможет его найти ( document.getElementById('#noScriptImage') потерпит неудачу).

Другим вариантом является размещение тега script после img, но затем есть изменение, которое в течение доли секунды изображение будет видно и экран будет мерцать. 1014 *

2 голосов
/ 30 ноября 2009

<script> теги в <head> HTML-страницы выполняются по мере их загрузки (если только у них не установлен атрибут defer), то есть до того, как изображения или даже остальная часть документа были загружен. Возможно, вы захотите сделать изображение, которое вы хотите скрыть в <div id="something" style="display:none">, и показать этот div после загрузки страницы и всего ее содержимого (включая ваш снимок экрана) (т. Е. В обработчике onload - или, очевидно, вы также можете использовать addEventListener).

НТН!

1 голос
/ 30 ноября 2009

Javascript будет зависеть от того, какое событие вы используете; если вы говорите о событии onload, то оно будет запущено сразу после загрузки всего контента.

Чтобы решить вашу проблему, вы можете создать страницу и написать там javascript, чтобы перенаправить ее в JavascriptEnabled.html; если вы не можете перенаправить его, вам также следует добавить тег META REFRESH и перенаправить его в JavascriptDisabled.html и отобразить предупреждающее сообщение.

...