[size=12]
Внедрение сценариев в документ. <SCRIPT>[/size]
ФорматКак правильно включать сценарий в документ с помощью тега <SCRIPT>?
Правильно так:
<script type="text/javascript">
// Содержимое внедренного тега
</script>
<script type="text/javascript" src="Внешний источник"></script>
Правильно использовать атрибут
type. Без него html-код будет невалидным.
Атрибут
language использовать неправильно. С ним верстка будет невалидна. Единственным его преимуществом, указываемым многими является возможность переключаться между версиями javascript или между javascript/jscript, например, language="Javascript1.2". Однако, здесь два момента:
1. Если вы указываете атрибут type (а его надо указывать), language будет просто проигнорирован.
2. Давно прошли те времена, когда переключение версий имело смысл. На данный момент всё можно делать совершенно другими и более удобными методами. Во всяком случае это верно для 98% обычных web-приложений.
В соответствии с высокими стандартами и спецификациями, даже type="text/javascript" неправильно. Правильно: type="application/javascript" или type="application/ecmascript", именно они должны постепенно прийти на смену text/javascript. Однако, пока не пришли и не факт что придут. Так что сейчас верно
type="text/javascript".
КомментарииМногие очень любят заключать содержимое <SCRIPT> в комментарии:
<script type="text/javascript">
<!–
alert("Жабаскрипт!");
// –>
</script>
Часть из практикующих это не может даже внятно объяснить зачем это делать. Просто все делают. Другая часть гордо поднимает указательный палец к верху и объясняет: "Это надо, чтобы старые браузеры, не знающие тега SCRIPT не выводили содержимое".
Граждане! Те браузеры давно вымерли. Не осталось ни одного вменяемого человека, который бы помнил как их звали и какие у них были порядковые версии. Однако дело их живет и процветает.
В ответ на это, опять-таки, любят заявлять: но все равно JS может быть выключено в браузере, а так же существует большое количество браузеров (например, для мобильных устройств), не поддерживающих его. Однако, браузер понимающий, хотя бы HTML версии 3 (а если он её не понимает, он не понимает ничего), знает, что содержимое SCRIPT выводить нельзя, вне зависимости от того, будет он его выполнять или нет.
Некоторые идут дальше и заключают в html-комментарии даже содержимое подключаемых JS-файлов. Почему, браузер не знающий о теге SCRIPT не будет выводит содержимое указанного в нем файла на экран, предлагаю подумать самим.
<![[CDATAС переходом на XHTML, однако, появляется новая напасть. Текстовое содержимое (а JS-код с точки зрения HTML, это просто текст внутри тега) не должно содержать очень многие символы из тех, что повсеместно используются в JS. Браузеры, конечно, не дураки и подобные вещи пропускают. Но особо ушлые верстальщики, все-таки хотят делать "как надо". Приходится содержимое SCRIPT заключать в секцию CDATA:
<script type="text/javascript">
//<![CDATA[
alert("Содержимое");
//]]>
</script>
Комментарии "//" необходимы, т.к. JS не знает о том, что такое CDATA
<head> или <body>Многим интересно, куда нужно вставлять сценарии. Только в <head> или можно и в <body>. Эксперимент показывает, что можно и в BODY. Остается вопрос, верно ли это с точки зрения стандартов? Ответ — с точки зрения стандартов это верно. С точки же зрения практики, это зависит от ситуации.
Общепринято библиотеки (набор функций) подключать в <head>. Код же производящий действия в момент подключения может понадобиться включить после html-кода элементов, к которым он совершает обращение.
О некоторых вещах из данной области можно почитать в теме
"обработка документа в браузере".