Чтение онлайн

на главную - закладки

Жанры

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
:

<а href="#">Open Window</a>

Без оператора

void
в этом URL-адресе значение, возвращаемое методом
Window.ореп
, было бы преобразовано в строку и (в некоторых броузерах) текущий документ был бы затерт новым документом с текстом:

[object Window]

Подобно HTML-атрибутам обработчиков событий, URL-адреса

javascript:
являются пережитком раннего периода развития Веб и не должны использоваться в современных HTML-страницах. URL-адреса
javascript:
могут сослужить полезную службу, если использовать их вне контекста HTML-документов. Если потребуется проверить работу небольшого фрагмента JavaScript-кода, можно ввести URL-адрес
javascript:
непосредственно в адресную строку броузера. Другое узаконенное применение URL-адресов
javascript:
– создание закладок в броузерах, как описывается ниже.

13.2.5.1. Букмарклеты

«Закладкой» в веб-броузере называется сохраненный URL-адрес. Если закладка содержит URL-адрес

javascript:
, такая закладка играет роль мини-программы на языке JavaScript, которая называется букмарклетом (bookmarklet). Букмарклеты легко можно запустить из меню или панели инструментов. Программный код в букмарклете выполняется, как если бы он являлся сценарием в странице; он может читать и изменять содержимое документа, его представление и поведение. Если букмарклет не возвращает какое-либо значение, он может манипулировать содержимым любого отображаемого документа, не замещая его новым содержимым.

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

Кодекс Охотника. Книга XXIV

Винокуров Юрий
24. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXIV

Я еще царь. Книга XXX

Дрейк Сириус
30. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я еще царь. Книга XXX

Вечный. Книга VII

Рокотов Алексей
7. Вечный
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Вечный. Книга VII

Эволюционер из трущоб. Том 6

Панарин Антон
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 6

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10

Главбухша

Романов Владислав Иванович
Любовные романы:
остросюжетные любовные романы
5.00
рейтинг книги
Главбухша

Бастард Бога (Дилогия)

Матвеев Владимир
Фантастика:
альтернативная история
5.11
рейтинг книги
Бастард Бога (Дилогия)

Изгой Проклятого Клана. Том 6

Пламенев Владимир
6. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 6

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Воронцов. Перезагрузка. Книга 5

Тарасов Ник
5. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 5

Феномен

Поселягин Владимир Геннадьевич
2. Уникум
Фантастика:
боевая фантастика
6.50
рейтинг книги
Феномен

Викинг

Мазин Александр Владимирович
1. Викинг
Приключения:
исторические приключения
8.92
рейтинг книги
Викинг