Я просто хочу спросить, что говорит название. Следующая строка требуется в тегах HTML script?
<!--
//-->
Если я не использую их, что произойдет?
Я просто хочу спросить, что говорит название. Следующая строка требуется в тегах HTML script?
<!--
//-->
Если я не использую их, что произойдет?
Нет, если вы не нацеливаете браузеры, предшествующие элементу <script>
(т.е. Netscape 1 и друзьям). (Подсказка: вы не являетесь).
Если вы не используете их, и браузер, который старый (так старый, что он даже не справляется с заголовком HTTP-хоста, который необходим для сайтов, использующих виртуальные хосты), пытается получить доступ к сайту, тогда содержимое элемент <script>
будет обрабатываться как текст, который будет отображаться.
Дополнительная литература: Комментарии и CDATA: таинственная история script и стиль в HTML
Хуже всего то, что ваша страница извлекается агентом пользователя, который не знает тег <script>
и пытается проанализировать ваш блок script как обычный HTML. Код JavaScript будет обрабатываться как обычный текст, а символы <
могут помешать разметке страницы. Принудительный пример:
<script type="text/javascript">
if(a<del || a>b){
foo();
}
</script>
Lorem ipsum dolor sit amet.
... может отображать как уродливый удаленный текст:
if (ab) {foo(); } Lorem ipsum dolor sit amet.
Существуют ли эти устаревшие пользовательские агенты? О, конечно. Обратите внимание, что я тщательно избегал слова "браузер". Вопрос не в том, кто использует Мозаику в наши дни. Это значит, что ваш сайт может быть прочитан плохо написанным PHP-синтаксическим анализатором на основе регулярного выражения.
Вам все равно? Ну, наверное, не:)
Если вы их не используете, браузер с начала 90-х может отображать исходный код JS вместо его запуска.
Нет, они не требуются. Эта привычка необходима для поддержки действительно старых браузеров и немного связана с включением тегов CDATA, которые должны быть включены для целей проверки. Ни один из них не требуется, но служит или служил своей цели, как ясно из некоторых более сложных ответов.
Для допустимого HTML ваш встроенный JavaScript должен быть экранирован HTML.
Если вы должны были написать script, например:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
Возникнет проблема, так как script содержит </script>
, который закроет первый открывающий тег script. У старых пользовательских агентов были всевозможные проблемы с плохо экранированным JavaScript, и было проще сказать людям:
<script>
//<!--
//-->
</script>
Чем он должен был научить людей писать script как:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
Обратите внимание, что комментарии JS используются для предотвращения попытки JavaScript выполнить команды <!--
и -->
, которые могут быть законными операторами (a<!--b
и a-->b
).
Вместо того, чтобы объяснять, что на самом деле они должны были превратить каждый "
в "
, <
в <
, >
в >
и &
в &
.
"Современное" исправление заключается в использовании символьного элемента данных, который сообщает документу, что все содержащее должно рассматриваться как буквальный текст:
<script type="text/javascript">
/* <![CDATA[ */
/* ]] */
</script>
В этом случае я использую многострочные комментарии, чтобы код не был поврежден, если он был уменьшен до одной строки (некоторые редакторы текстового редактора сделали это для меня в прошлом).
Лучшее решение - просто сохранить все HTML файлы в .html
, все CSS в файлах .css
и все файлы JS в .js
. Вам никогда не придется беспокоиться о том, что HTML ускользает от вашего JavaScript, и вы сможете повторно использовать JS в другом месте, просто вставив новый <script>
.
Google "зачем комментировать javascript в html", сначала попал:
http://www.howtocreate.co.uk/tutorials/javascript/incorporate
Это больше не нужно. Все текущие браузеры знают теги script и как обрабатывать их содержимое, поскольку они были частью HTML с HTML 3. Браузеры, которые не понимают HTML 3 или скрипты (они практически никогда не используются сейчас) w370 > как будто это было содержимое страницы. Вы можете скрыть script от них, комментируя свой script со стандартными комментариями HTML.
99% времени, они больше не нужны:) Если вы не запускаете какой-то действительно старый браузер!
Комментирование кода JavaScript таким образом также может препятствовать индексированию содержимого в поисковых системах и может быть желательно в некоторых случаях.
Например, некоторое время назад я нашел много проблем с "страницей не найден" в инструментах для веб-мастеров Google. После простого анализа URL-адресов я выяснил, что Google получает все пути-подобные переменные из моего JS-кода (например, "имя/001" ), присоединил их к текущему url (mysite.info/staff) и попытался запросить приведенные URL-адрес. Без успеха, конечно.
После вставки <!-- //-->
в некоторые из блоков JS все "страницы не найдены" исчезли в течение месяца или двух.