Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по Java Script 1.doc
Скачиваний:
133
Добавлен:
12.02.2015
Размер:
1.44 Mб
Скачать

Атрибут defer

Во время выполнения сценария может вызываться метод document.write() для динамического добавления содержимого в документ. Поэтому когда HTML - анализатор встречает сценарий, он должен прекратить разбор документа и ожидать, пока сценарий не завершит свою работу. Стандарт HTML 4 определяет атрибут defer для тега <script>, который имеет отношение к этой проблеме.

С помощью атрибута defer тега <script> можно сообщить браузеру, чтобы он спокойно продолжал обработку HTML-документа и отложил исполнение сценария до тех пор, пока не будет найден сценарий, выполнение которого отложено быть не может.

Задержка исполнения сценария полезна, когда сценарий загружается из внешнего файла; если исполнение сценария не задержать, браузер вынужден будет ждать окончания загрузки и только потом сможет продолжить разбор содержимого документа. Задержка исполнения может привести к повышению производительности браузеров, способных использовать преимущества атрибута defer. В HTML у атрибута defer не может быть значения; он просто должен присутствовать в теге:

<script defer>

// Любой JavaScript - код, не вызывающий document.write()

</script>

Однако в XHTML значение этого атрибута должно быть указано:

<script defer="defer"></script>

К настоящему моменту Internet Explorer был единственным браузером, использующим атрибут defer. При этом задержка выполняется, только когда тег <script> содержит атрибут src. Однако реализация задержки выполнена не совсем корректно, поскольку исполнение сценария с атрибутом defer всегда откладывается до окончания разбора документа, а не до того момента, когда встретится первый сценарий, исполнение которого нельзя отложить. Это означает, что отложенные сценарии в IE могут исполняться не в том порядке, в котором они располагаются в теле документа. В результате некоторые функции или переменные, востребованные в сценариях, исполнение которых не откладывалось, могут быть не определены.

Тег <noscript>

Язык разметки HTML определяет элемент <noscript>, предназначенный для хранения отображаемого содержимого на случай, когда в браузере включен режим, запрещающий исполнение JavaScript - кода.

В идеале веб - страницы должны создаваться так, чтобы JavaScript - код лишь расширял их функциональные возможности, а в случае его отключения страницы сохраняли свою работоспособность. Однако если это невозможно, с помощью тега <noscript> можно известить пользователя о том, что требуется включить поддержку JavaScript и, возможно, предоставить ссылку на альтернативную страницу.

Тег </script>

В какой_то момент вам может потребоваться с помощью метода document.write() или свойства innerHTML вывести некоторый другой сценарий (обычно в другое окно или фрейм). Тогда для завершения генерируемого сценария потребуется вывести тег </script>. Здесь необходима осторожность – HTML - анализатор не пытается понять JavaScript - код, и встретив строку "/script" даже внутри кавычек, он предположит, что это закрывающий тег выполняемого в данный момент сценария. Чтобы обойти это препятствие, разбейте тег на части и запишите его, например, в виде выражения "</" + "script>", как показано в следующем фрагменте:

<script>

f1.document.write("<script>");

f1.document.write("document.write('<h2>Это сценарий в кавычках</h2>')");

f1.document.write("</" + "script>");

</script>

В качестве альтернативы можно экранировать символ слэша / в теге </script> с помощью символа обратного слэша:

f1.document.write("<\/script>");

В XHTML сценарии заключаются в секцию CDATA и потому проблема с закрывающим тегом </script> никак не проявляется.

Нестандартные атрибуты тега <script>

В корпорации Microsoft были определены два нестандартных атрибута тега <script>, которые работают только в Internet Explorer. Атрибуты event и for позволяют задавать обработчики событий с помощью тега <script>. Атрибут event определяет имя обрабатываемого события, а атрибут for – имя, или идентификатор (ID), элемента, для которого этот обработчик предназначается. Сценарий исполняется, когда в заданном элементе возникает заданное событие.

Эти атрибуты работают только в IE, а достигаемый ими эффект легко может быть реализован другими способами. Эти атрибуты никогда не следует использовать – они упомянуты здесь лишь для того, чтобы вы знали об их существовании, если вдруг придется столкнуться с ними в существующих веб - страницах.

При написании скрипта следует учитывать следующие особенности языка.

  • В языке Java Script важен регистр! Например, переменные x и X – это разные переменные.

  • Нельзя свободно переносить на другие строки элементы выражений. Скажем, если при выводе на печать используется метод document.write(), то необходимо разместить команду в одной строке. В случае, если часть выражения не помещается, нужно разбить строку вывода на два оператора.

  • Отдельные операторы отделяются «;»