В данном разделе рассматривается, как авторы могут создать документ, работающий с ПА, не поддерживающими скрипты.
Элемент 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>
Примечание. Некоторые браузеры закрывают комментарий при обнаружении первого символа «>», поэтому, для того, чтобы спрятать скрипт от таких браузеров, Вы можете поменять местами операнды в операторах сравнения и смещения (напр., использовать «y < x» вместо «x > y») или использовать зависимые от языка скриптов escape-последовательности для «>».