2009-11-30 2 views
1

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

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

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

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

ответ

2

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

HTH!

+0

Вверх для первого ответа, действительно отвечающего на вопрос, когда он выполнен ;-) Итак, чтобы повторить; Если я поместил бы перенаправление в JS в заголовок, он будет выполнен до загрузки фонового изображения? Итак, это решение моей проблемы, только одно перенаправление, если оно не работает, страница будет загружаться с изображением. –

+0

Да. Переадресация (location.href = '...';) будет выполнена немедленно. – AKX

4

Почему бы не просто поставить предупреждение «вы должны иметь javascript» внутри метки <noscript>?

+0

Поскольку это не мешает пользователю использовать сайт в любом случае, это то, что мне нужно сделать. Это должно быть (по крайней мере, без редактирования CSS) невозможно использовать сайт без JS ... –

+0

Носители не обязательно должны следовать за элементами сценария, поэтому вы можете поместить JS в голову и все еще иметь элементы noscript в теле. – Boldewyn

+0

'

1

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

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

+0

Хорошая мысль, и хорошая идея! Я обязательно посмотрю на это. –

2

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

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

+0

Очень хорошо понимать, теперь все становится понятнее. –

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