11.3 Дизайн документов для ПА, не поддерживающих сценарии

В данном разделе рассматривается, как авторы могут создать документ, работающий с ПА, не поддерживающими скрипты.

Элемент 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-последовательности для «>».