Нажимаю на ссылку на дополнительный материал и дополнение к информации-меня возвращает на первую страницу лекции. Подскажите, что делать? Или дополнительный материал платный? |
Сценарии (скрипты)
Динамическое изменение документов
Скрипты, выполняемые при загрузке документа, могут использоваться для динамической модификации документа. Возможность сделать это зависит от самого языка скриптов (напр., оператор "document.write" в объектной модели HTML не поддерживается некоторыми производителями).
Динамическая модификация документа может быть смоделирована так:
- Все элементы SCRIPT выполняются в том порядке, как они загружаются.
- Все конструкции скриптов в данном элементе SCRIPT, генерирующем SGML CDATA, выполняются. Их комбинированный сгенерированный текст вставляется в документ вместо элемента SCRIPT.
- Сгенерированные CDATA выполняются заново.
Документы HTML должны соответствовать Определению Типа Данных (ОТД) HTML и до, и после обработки элемента SCRIPT.
Следующий пример иллюстрирует, как скрипты могут модифицировать документ динамически.
<TITLE>Test Document</TITLE> <SCRIPT type="text/javascript"> document.write("<p><b>Hello World!<\/b>") </SCRIPT>
работает так же, как и:
<TITLE>Test Document</TITLE> <P><B>Hello World!</B>
Дизайн документов для ПА, не поддерживающих сценарии
В данном разделе рассматривается, как авторы могут создать документ, работающий с ПА, не поддерживающими скрипты.
Элемент NOSCRIPT
<!ELEMENT NOSCRIPT - - (%block;)+ -- контейнер для альтернативного содержимого при отображении без использования скриптов --> <!ATTLIST NOSCRIPT %attrs; -- %coreattrs, %i18n, %events -- >
Элемент NOSCRIPT даёт авторам возможность предоставить альтернативное содержимое, если скрипт не выполняется. Содержимое элемента NOSCRIPT должно отображаться ПА, "понимающим" скрипты, только в следующих случаях:
- ПА сконфигурирован так, чтобы не выполнять скрипты ;
- ПА не поддерживает язык скриптов, ранее заявленный в элементе SCRIPT в этом документе.
ПА, не поддерживающие скрипты на стороне клиента, обязаны выводить содержимое этого элемента.
В следующем примере ПА, исполняющий SCRIPT, будет включать некоторые динамически создаваемые данные в документ. Если ПА не поддерживает скрипты, пользователь сможет запросить данные по гиперссылке.
<SCRIPT type="text/tcl"> ...некоторый скрипт Tcl для вставки данных... </SCRIPT> <NOSCRIPT> <P>Перейдите на <A href="http://someplace.com/data">data.</A> </NOSCRIPT>
Скрытие данных скрипта от ПА
Есть вероятность того, что ПА, не распознающие элемент SCRIPT, будут рассматривать его содержимое как текст. Некоторые машины скриптов, в том числе для языков JavaScript, VBScript и Tcl, разрешают включение операторов скрипта в комментарий SGML. ПА, не распознающие элемент SCRIPT, будут тогда игнорировать комментарий, в то время как более совершенные машины скриптов "поймут", что скрипт внутри комментария должен выполняться.
Другим решением проблемы является сохранение скриптов во внешнем документе и ссылка на него с помощью атрибута src.
Комментирование скриптов в JavaScript
Машина JavaScript допускает " <!-- " как начало элемента SCRIPT и игнорирует оставшиеся символы до конца строки. JavaScript интерпретирует "//" как начало комментария до конца текущей строки. Это необходимо, чтобы спрятать " --> " от разборщика JavaScript.
<SCRIPT type="text/javascript"> <!-- прячет содержимое скрипта от старых браузеров function square(i) { document.write("Вызов передан функции", i "<BR>") return i * i } document.write("Функция возвратила ",square(5),".") // конец скрытия содержимого от старых браузеров --> </SCRIPT>
Комментирование скриптов в VBScript
В VBScript одиночная кавычка указывает, что оставшаяся часть строки должна рассматриваться как комментарий. Таким образом, она может использоваться для скрытия " --> " от VBScript, например:
<SCRIPT type="text/vbscript"> <!-- Sub foo() ... End Sub ' --> </SCRIPT>
Комментирование скриптов в TCL
В Tcl символ " # " обозначает комментарий до конца строки:
<SCRIPT type="text/tcl"> <!-- прячет содержимое скрипта от старых браузеров proc square {i} { document write "Вызов передан функции $i.<BR>" return [expr $i * $i] } document write "Функция вернула [square 5]." # конец скрытия содержимого от старых браузеров --> </SCRIPT>