Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

<script language="javascript">

// Здесь располагается JavaScript-код...

</script>

Атрибут

language
считается устаревшим и не должен более использоваться.

Когда веб-броузер встречает элемент

<script>
с атрибутом
type
, значение которого он не может распознать, он пытается проанализировать элемент, но не отображает и не выполняет его содержимое. Это означает, что элемент
<script>
можно использовать для встраивания в документ произвольных текстовых данных: достаточно просто указать значение атрибута
type
, указывающее, что данные не являются выполняемым программным кодом. Чтобы извлечь эти данные, можно воспользоваться свойством
text
объекта
HTMLElement
, представляющего элемент
script
(как получить эти элементы, описывается в главе 15). Однако важно отметить, что такой прием встраивания данных работает только при непосредственном встраивании их в разметку. Если указать атрибут
src
и неизвестное значение в атрибуте
type
, броузер проигнорирует этот тег и ничего не будет загружать с указанного адреса URL.

13.2.4. Обработчики событий в HTML

JavaScript-код, расположенный в теге

<script>,
исполняется один раз, когда содержащий его HTML-файл считывается в веб-броузер. Для обеспечения интерактивности программы на языке JavaScript должны определять обработчики событий - JavaScript-функции, которые регистрируются в веб-броузере и автоматически вызываются веб-броузером в ответ на определенные события (такие как ввод данных пользователем). Как было показано в начале этой главы, JavaScript-код может регистрировать обработчики событий, присваивая функции свойствам объектов
Element
(таким как
onclick
или
onmouseover
), представляющих HTML-элементы в документе. (Существует и другой способ регистрации обработчиков событий - подробности приводятся в главе 17.)

Свойства обработчиков событий, такие как

onclick
, отражают HTML-атрибуты с теми же именами, что позволяет определять обработчики событий, помещая JavaScript-код в HTML-атрибуты. Например, чтобы определить обработчик события, который вызывается, когда пользователь щелкает на флажке в форме, код обработчика указывается в качестве значения атрибута
onchange
HTML-элемента, определяющего флажок:

<input type="checkbox" name="options" value="giftwrap"

onchange="order.options.giftwrap = this.checked;">

Обратите внимание на атрибут

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

Атрибуты обработчиков событий, включенных в разметку HTML, могут содержать одну или несколько JavaScript-инструкций, отделяемых друг от друга точками с запятой. Эти инструкции будут преобразованы интерпретатором в тело функции, которая в свою очередь станет значением соответствующего свойства обработчика события. (Подробное описание, как выполняется преобразование текстового содержимого HTML-атрибутов в функции на языке JavaScript, приводится в разделе 17.2.2.) Однако обычно в HTML-атрибуты обработчиков событий включаются простые инструкции присваивания, как в примере выше, или простые вызовы функций, объявленных где-то в другом месте. Это позволяет держать большую часть JavaScript-кода внутри сценариев и ограничивает степень взаимопроникновения JavaScript- и HTML-кода. На практике многие веб-разработчики считают плохим стилем использование HTML-атрибутов обработчиков событий и предпочитают отделять содержимое от поведения.

13.2.5. JavaScript в URL

Еще один способ выполнения JavaScript-кода на стороне клиента - включение этого кода в URL-адресе вслед за спецификатором псевдопротокола

javascript:
. Этот специальный тип протокола обозначает, что тело URL-адреса представляет собою произвольный JavaScript-код, который должен быть выполнен интерпретатором JavaScript. Он интерпретируется как единственная строка, и потому инструкции в ней должны быть отделены друг от друга точками с запятой, а для комментариев следует использовать комбинации символов /* */, а не //. «Ресурсом», который определяется URL-адресом
javascript:
, является значение, возвращаемое этим программным кодом, преобразованное в строку. Если программный код возвращает значение
undefined
, считается, что ресурс не имеет содержимого.

URL вида

javascгipt:
можно использовать везде, где допускается указывать обычные URL: в атрибуте
href
тега
<а>,
в атрибуте
action
тега
<form>
и даже как аргумент метода, такого как
window.ореп.
Например, адрес URL с программным кодом на языке JavaScript в гиперссылке может иметь такой вид:

<a href="#">

Который сейчас час?

</a>

Некоторые броузеры (такие как Firefox) выполняют программный код в URL и используют возвращаемое значение в качестве содержимого нового отображаемого документа. Точно так же, как при переходе по ссылке http:, броузер стирает текущий документ и отображает новое содержимое. Значение, возвращаемое примером выше, не содержит HTML-теги, но если бы они имелись, броузер мог бы отобразить их точно так же, как любой другой HTML-документ, загруженный в броузер. Другие броузеры (такие как Chrome и Safari) не позволяют URL-адресам, как в примере выше, затирать содержимое документа - они просто игнорируют возвращаемое значение. Однако они поддерживают URL-адреса вида:

<a href="#">

Узнать время, не затирая документ

</a>

Когда загружается такой URL-адрес, броузер выполняет JavaScript-код, но, т.к. он не имеет возвращаемого значения (метод

alert
возвращает значение
undefined
), такие броузеры, как Firefox, не затирают текущий отображаемый документ. (В данном случае URL-адрес
javascript:
служит той же цели, что и обработчик события
onclick
. Ссылку выше лучше было бы выразить как обработчик события
onclick
элемента
<button>
– элемент
<а>
в целом должен использоваться только для гиперссылок, которые загружают новые документы.) Если необходимо гарантировать, что URL-адрес
javascript:
не затрет документ, можно с помощью оператора
void
обеспечить принудительный возврат значения
undefined
:

  • Читать дальше
  • 1
  • ...
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: