18.1 Введение в скрипты Клиентский скрипт - это программа, которая может сопровождать документ HTML или непосредственно быть внедренной в него. Эта программа выполняется на клиентской машине при загрузке документа или в другое время, например, когда активизируется ссылка. Поддержка скриптов в HTML не зависит от языка скрипта. Скрипты предлагают авторам средства усиления интерактивности документов HTML. Например: Скрипты могут оцениваться во время загрузки документа и динамически изменять содержимое документа. Скрипты могут использоваться в форме для обработки вводимых данных. Дизайнеры могут динамически заполнять поля формы в зависимости от значений других полей. Они могут проверять, попадают ли введенные данные в предопределенный диапазон значений, соответствие полей и т.д. Скрипты могут включаться событиями, оказывающими влияние на документ, например, загрузкой, выгрузкой, фокусом элемента, перемещением мыши и т.д. Скрипты могут связываться с управляющими элементами формы (например, с кнопками) для представления элементов пользовательского интерфейса. Авторы могут прикреплять к документу HTML два типа скриптов: Скрипты, выполняющиеся один раз при загрузке документа агентом пользователя. Скрипты, описанные в элементе SCRIPT, выполняются при загрузке документа. Для агентов пользователя, не обрабатывающих скрипты, авторы могут определить альтернативное содержимое с помощью элемента NOSCRIPT. Скрипты, выполняемые каждый раз, когда происходит определенное событие. Эти скрипты могут назначаться ряду элементов с помощью атрибутов внутренних событий. Примечание. Более подробная информация приводится в разделах о макросах скриптов. 18.2 Разработка документов для агентов пользователя, поддерживающих скрипты Следующие разделы относятся к агентам пользователей, поддерживающих скрипты. 18.2.1 Элемент SCRIPT Начальный тег: обязателен, Конечный тег: обязателен Определения атрибутов src = uri [CT] Этот атрибут определяет местоположение внешнего скрипта. type = content-type [CI] Этот атрибут задает язык скрипта содержимого элемента и имеет приоритет над языком скрипта, заданным по умолчанию. Язык скрипта указывается как тип содержимого (например, "text/javascript"). Авторы должны указать значение этого атрибута. Значение по умолчанию для этого атрибута не задано. language = cdata [CI] Нежелателен.Этот атрибут определяет язык скрипта содержимого этого элемента. Его значением является идентификатор языка, но поскольку идентификаторы не стандартизованы, этот атрибут является нежелательным, вместо него нужно использовать атрибут type. defer [CI] Если этот логический атрибут установлен, он обеспечивает для агента пользователя подсказку о том, что скрипт не будет генерировать содержимое документа (например, "document.write" в javascript) и таким образом агент пользователя может продолжать синтаксический разбор и представление документа. Атрибуты, определяемые в любом другом месте charset (кодировка символов) Элемент SCRIPT помещает скрипт в документа. Этот элемент может указываться в элементе HEAD или BODY документа HTML несколько раз. Скрипт может определяться в содержимом элемента SCRIPT или во внешнем файле. Если не установлен атрибут src, агенты пользователя должны интерпретировать содержимое элемента как скрипт. Если для для атрибута src установлено значение URI, агенты пользователей должны игнорировать содержимое этого элемента и загружать скрипт через URI. Обратите внимание, что атрибут charset относится к кодировке символов скрипта, назначаемого атрибутом src; он не относится к содержимому элемента SCRIPT. Скрипты оцениваются ядром скрипта, которое агент пользователя должен знать. Синтаксис данных скрипта зависит от языка скрипта. 18.2.2 Указание языка скрипта Поскольку документ HTML не предполагает определенный язык скрипта, авторы документа должны явно сообщить агентам пользователей язык каждого скрипта. Это может выполняться с помощью объявления скрипта по умолчанию или с помощью локального объявления. Язык скрипта по умолчанию Авторы должны указывать язык скрипта по умолчанию для всех скриптов в документе, включив следующее объявление META в тег HEAD: где "type" - тип содержимого, именующий язык скрипта. Примерами значений являются "text/tcl", "text/javascript", "text/vbscript". Если отсутствует объявление META, значение по умолчанию может устанавливаться с помощью заголовка протокола HTTP "Content-Script-Type". Content-Script-Type: тип где "тип" - тип содержимого, именующий язык скрипта. Агенты пользователей должны определять язык скрипта по умолчанию для документа в соответствии со следующими действиями (приоритет от высшего к низшему): Если в объявлении META задается "Content-Script-Type", язык скрипта по умолчанию задается последним таким объявлением в потоке символов. В противном случае, если в заголовках HTTP задается "Content-Script-Type", язык скрипта по умолчанию задается последним таким объявлением в потоке символов. Документы, в которых не указан язык скрипта по умолчанию, но содержатся элементы, задающие внутренние события, некорректны. Агенты пользователей могут предпринимать попытки интерпретировать некорректно заданные скрипты, но это не обязательно. Средства разработки должны генерировать информацию о языке скрипта по умолчанию во избежание создания некорректных документов. Локаьлное объявление языка скрипта Язык скрипта можно задавать в каждом элементе SCRIPT с помощью атрибута type. Если не указан язык скрипта по умолчанию, этот атрибут должен устанавливаться для каждого элемента SCRIPT. Если задан язык скрипта по умолчанию, атрибут type имеет приоритет над ним. В этом примере мы объявляем язык скриптов по умолчанию: "text/tcl". В заголовок включается элемент SCRIPT, сам скрипт находится во внешнем файле и использует язык "text/vbscript". Кроме того, один элемент SCRIPT находится в теле документа и содержит другой скрипт, написанный на языке "text/javascript".
Hello World! 18.3 Разработка документов для агентов пользователей, не поддерживающих скрипты В следующих разделах обсуждается создание документов для агентов пользователей, не поддерживающих скрипты. 18.3.1 Элемент NOSCRIPT Начальный тег: обязателен, Конечный тег: обязателен Элемент NOSCRIPT позволяет авторам определять альтернативное содержимое, когда скрипт не выполняется. Содержимое элемента NOSCRIPT должно генерироваться агентам пользователей, поддерживающими скрипты, только в следующих случаях: Агент пользователя сконфигурирован так, чтобы не выполнять скрипты. Агент пользователя не поддерживает язык скриптов, используемый элементом SCRIPT. Агенты пользователей, не поддерживающие клиентские скрипты, должны представлять содержимое этого элемента. В следующем примере агент пользователя, выполняющий элемент SCRIPT, включит в документ динамически создаваемые данные. Если агент пользователя не поддерживает скрипты, пользователь может загрузить эти данные по ссылке. 18.3.2 Как скрыть скрипт от агентов пользователей Агенты пользователей, не распознающие элемент SCRIPT, могут представить его в виде текста. Некоторые ядра скриптов, включая ядра для языков JavaScript, VBScript и Tcl, позволяют включать выражения скриптов в комментарий SGML. Агенты пользователей, не распознающие элемент SCRIPT, будут игнорировать комментарии, а ядро скрипта обнаружит и выполнит его. Другим решением этой проблемы является хранение скриптов во внешних документах и ссылка на них с помощью атрибута src. Комментирование скриптов JavaScript Ядро JavaScript допускает использование строки "" не разбиралась синтаксическим анализатором JavaScript. Комментирование скриптов в VBScript В VBScript комментарием считается весь текст, начиная с символа одиночной кавычки до конца строки. Это может использоваться для комментирования строки "-->" от VBScript, напрмер: Комментирование скриптов в TCL В Tcl комментарием считается текст от символа "#" до конца строки: Примечание. Некоторые браузеры считают концом комментариев первый символ ">". В этом случае Вы можете перенести операнды для операторов отношения и сдвига (например, используя "y < x" вместо "x > y") или использовать определенные в языке скрипта способы обхода символа ">".