Хотя JavaScript изначально был языком сценариев для Всемирной паутины и ос_ тается в ней самым распространенным, он не единственный. HTML_спецификации нейтральны к выбору языка сценариев, благодаря чему производители броузеров могут выбирать языки сценариев по своему усмотрению. На практике же единст_ венной серьезной альтернативой JavaScript является язык Visual Basic Scripting Edition корпорации Microsoft1, который поддерживается Internet Explorer.
1 Также известный как VBScript. Он поддерживается только Internet Explorer, по_ этому сценарии, написанные на этом языке, непереносимы. VBScript взаимодей_ ствует с HTML_объектами так же, как и JavaScript, но синтаксис самого языка сильно отличается от JavaSript. В данной книге VBScript не описывается.
13.2. Встраивание JavaScript*кода в HTML*документы
Поскольку существует возможность использования более одного языка сценари_ ев, необходимо сообщить веб_броузеру, на каком языке написан сценарий. Это по_ зволяет корректно интерпретировать сценарии и пропускать сценарии, написан_ ные на языках, которые не поддерживаются. Существует возможность определить язык сценариев для всего файла с помощью HTTP_заголовка Content_Script_Type. Имитировать этот заголовок в HTML_файле можно с помощью тега <meta>. Чтобы указать, что все сценарии написаны на языке JavaScript (если не указано иное), достаточно просто поместить следующий тег в секцию <head> HTML_документа:
На практике броузеры полагают, что JavaScript является языком сценариев по умолчанию, даже если сервер не присылает заголовок Content_Script_Type и в стра_ нице опущен тег <meta>. Однако если язык сценариев по умолчанию не определен или возникает необходимость изменить значение по умолчанию, необходимо ис_ пользовать атрибут type тега <script>:
<script type="text/javascript"></script>
Традиционно для программ на языке JavaScript указывался MIME_тип "text/ javascript". Другой используемый тип – "application/x_javascript" (где префикс x_ указывает, что это нестандартный экспериментальный тип). Тип "text/java_ script" стандартизован в RFC 4329 как наиболее распространенный. Однако по_ скольку JavaScript_программы в действительности не являются текстовыми до_ кументами, такой тип считается устаревшим и рекомендуется указывать вместо него тип "application/javascript" (без префикса x_). Однако на момент написания этих строк тип "application/javascript" не обладал достаточной поддержкой. Как только эта поддержка появится, правильнее будет использовать теги <script> и <meta> следующим образом:
Когда тег <script> только появился, он был просто нестандартным расширением языка HTML и не поддерживал атрибут type. В то время язык сценариев опреде_ лялся с помощью атрибута language:
<script language="JavaScript">
// Здесь располагается JavaScript_код </script>
А если сценарий был написан на языке VBScript, атрибут выглядел следующим образом:
<script language="VBScript">
' Программный код VBScript (' – признак комментария, аналог // в JavaScript) </script>
Спецификация HTML 4 стандартизует тег <script>, но отвергает атрибут lan_ guage, т. к. стандартный набор имен языков сценариев не определен. Однако ино_ гда можно встретить тег <script>, в котором используются и атрибут type (в соот_ ветствии с требованиями стандарта), и атрибут language (для сохранения обрат_ ной совместимости с устаревшими версиями броузеров):
Теоретически веб_броузеры игнорируют сценарии, написанные на неподдержи_ ваемой версии JavaScript. Так, устаревшие версии броузеров, не поддерживаю_ щие JavaScript 1.5, не должны запускать сценарии, для которых в атрибуте lan_ guage указана строка "JavaScript1.5". Старые версии броузеров принимают во внимание номер версии, но поскольку ядро языка JavaScript остается стабиль_ ным на протяжении последних нескольких лет, многие современные броузеры игнорируют любые номера версий, указанные в атрибуте language.