Российский государственный гуманитарный университет
Опубликован: 14.08.2003 | Доступ: свободный | Студентов: 23388 / 4434 | Оценка: 4.00 / 3.90 | Длительность: 10:03:00
Лекция 1:

Назначение и применение JavaScript, общие сведения

Лекция 1: 1234 || Лекция 2 >

Способ 1: URL-схема "JavaScript:"

Схема URL (Uniform Resource Locator) - это один из основных элементов Web-технологии. Каждый информационный ресурс в Web имеет свой уникальный URL. URL указывают в атрибуте HREF контейнера A, в атрибуте SRC контейнера IMG, в атрибуте ACTION контейнера FORM и т.п. Все URL подразделяются на схемы доступа, которые зависят от протокола доступа к ресурсу, например, для доступа к FTP-архиву применяется схема ftp, для доступа к Gopher-архиву - схема gopher, для отправки электронной почты - схема mailto. Тип схемы определяется по первому компоненту URL, например:

http://intuit.ru/directory/page.html

В данном случае URL начинается с http - это и есть задание схемы доступа (схема http ).

Основной задачей языка программирования гипертекстовой системы является программирование гипертекстовых переходов. Это означает, что при выборе той или иной гипертекстовой ссылки вызывается программа реализации гипертекстового перехода. В Web-технологии стандартной программой, вызываемой при гипертекстовом переходе, является программа загрузки страницы (т.е. при клике по ссылке загружается страница с указанным URL). JavaScript позволяет поменять стандартную программу на программу пользователя. Для того, чтобы отличить стандартный переход по протоколу HTTP от перехода, программируемого на JavaScript, разработчики языка ввели новую схему URL - JavaScript:

<A HREF="JavaScript:код_программы">...</A>
<FORM ACTION="JavaScript:код_программы" ...> ... </FORM>

В данном случае текст " код_программы " обозначает программу-обработчик на JavaScript, которая вызывается при выборе гипертекстовой ссылки в первом случае и при отправке данных формы (нажатии кнопки Submit) - во втором. Например, при нажатии на гипертекстовую ссылку " Кликни здесь " можно получить окно предупреждения:

<A HREF="JavaScript:alert('Внимание!!!');">Кликни здесь</A>
Окно предупреждения

Рис. 1.1. Окно предупреждения

А при нажатии на кнопку типа submit в форме можно заполнить текстовое поле этой же формы:

<FORM METHOD=post NAME="form"
  ACTION="JavaScript:form.e.value='Нажали кнопку: Заполнить';void(0);">
<INPUT TYPE=text NAME=e SIZE=30 VALUE=""><BR>
<INPUT TYPE=submit VALUE="Заполнить">
<INPUT TYPE=reset VALUE="Очистить">
</FORM>
1.1. Заполнение поля при нажатии кнопки

В URL можно размещать сложные программы и вызовы функций. Таким образом, при программировании гипертекстового перехода JavaScript-интерпретатор получает управление после того, как пользователь "кликнул" по гипертекстовой ссылке.

Способ 2: обработчики событий

Такие программы, как обработчики событий, указываются в атрибутах контейнеров, с которыми эти события связаны. Например, при нажатии на кнопку происходит событие Click и соответственно вызывается обработчик этого события onClick:

<FORM><INPUT TYPE=button VALUE="Кнопка" 
     onClick="alert('Вы нажали кнопку');"></FORM>

А в момент завершения полной загрузки документа (он связан с контейнером <BODY> ) происходит событие Load и, соответственно, будет вызван обработчик этого события onLoad:

<BODY onLoad="alert('Приветствуем!');">
...
</BODY>

Способ 3: подстановки

Подстановки (entity) поддерживаются только браузером Netscape Navigator 4.0. Они встречаются на Web-страницах довольно редко. Тем не менее это достаточно мощный инструмент генерации HTML-страницы на стороне браузера. Подстановки имеют формат: &{код_программы}; и используются в качестве значений атрибутов HTML-контейнеров. В следующем примере поле ввода INPUT будет иметь, в качестве значения по умолчанию, адрес текущей страницы, а размер поля будет равным количеству символов в этом адресе.

<HTML>
<HEAD>
<SCRIPT>
function l()
{
  str = window.location.href;
  return(str.length);
}
</SCRIPT>
</HEAD>
<BODY>
<FORM><INPUT TYPE=text SIZE="&{l()};"
   VALUE="&{window.location.href};">
</FORM>
</BODY>
</HTML>

В случае подстановки JavaScript-интерпретатор получает управление в момент разбора браузером (компонент парсер ) HTML-документа. Как только парсер встречает конструкцию &{..}; у атрибута контейнера, он передает управление JavaScript-интерпретатору, который, в свою очередь, после исполнения кода это управление возвращает парсеру. Таким образом, данная операция аналогична подкачке графики на HTML-страницу.

Очевидно, что размещать в заголовке документа генерацию текста страницы бессмысленно - он не будет отображен браузером. Поэтому в заголовок помещают декларации общих переменных и функций, которые будут затем использоваться в теле документа. При этом браузер Netscape Navigator более требовательный, чем Internet Explorer. Если не разместить описание функции в заголовке, то при ее вызове в теле документа можно получить сообщение о том, что данная функция не определена.

В Internet Explorer подстановки не поддерживаются, поэтому пользоваться ими следует аккуратно. Прежде чем выдать браузеру страницу с подстановками, нужно проверить тип этого браузера. Альтернативой подстановкам в Internet Explorer можно считать динамические свойства стиля. Например, следующий фрагмент создаст поле ввода, ширина которого в пикселях ( px ) равна количеству символов в адресе страницы, умноженному на 10:

<INPUT TYPE=text style="width:expression(10*location.href.length+'px')">

Мы не будем подробно останавливаться на этом способе использования JavaScript-кода.

Лекция 1: 1234 || Лекция 2 >
Валерий Банатин
Валерий Банатин

function f() { var i=5; k=7; } f(); alert(k);

В примере выдается результат k=7, однако, хоть переменная и не объявлена, она внутри функции, т.е. локальная и не должна быть видима, или вторая и последующие все-таки становятся глобальными?

Дамир Кантюков
Дамир Кантюков

Изучаю курс введение в JavaScript. 4 уроке есть код, где метод присвоен переменной, почему у меня не работает, браузер гугл:

<HTML><HEAD> <SCRIPT> wid = window.open('','','width=750,height=100,status=yes'); wid.document.open(); R = wid.document.write; R('<HTML><HEAD><SCRIPT>var t;<\/SCRIPT></HEAD>'); R('<BODY><H1>Новое окно</H1></BODY></HTML>'); wid.document.close(); </SCRIPT> </HEAD> <BODY> <A HREF="javascript: wid.t=window.prompt('Новое состояние:',''); wid.document.write(wid.t); wid.focus(); void(0);" >Изменим значение переменной t в новом окне</A> </BODY></HTML>