Скрытие данных скрипта от ПА
Есть вероятность того, что ПА, не распознающие элемент 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-последовательности для ">".