Требуется JavaScript <! -//->?
Я просто хочу спросить, что говорит название. Следующая строка требуется в тегах HTML script?
<!--
//-->
Если я не использую их, что произойдет?
Ответы
Ответ 1
Нет, если вы не нацеливаете браузеры, предшествующие элементу <script>
(т.е. Netscape 1 и друзьям). (Подсказка: вы не являетесь).
Если вы не используете их, и браузер, который старый (так старый, что он даже не справляется с заголовком HTTP-хоста, который необходим для сайтов, использующих виртуальные хосты), пытается получить доступ к сайту, тогда содержимое элемент <script>
будет обрабатываться как текст, который будет отображаться.
Дополнительная литература: Комментарии и CDATA: таинственная история script и стиль в HTML
Ответ 2
Хуже всего то, что ваша страница извлекается агентом пользователя, который не знает тег <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-синтаксическим анализатором на основе регулярного выражения.
Вам все равно? Ну, наверное, не:)
Ответ 3
Если вы их не используете, браузер с начала 90-х может отображать исходный код JS вместо его запуска.
Ответ 4
Нет, они не требуются.
Эта привычка необходима для поддержки действительно старых браузеров и немного связана с включением тегов CDATA, которые должны быть включены для целей проверки. Ни один из них не требуется, но служит или служил своей цели, как ясно из некоторых более сложных ответов.
Смотрите: Когда раздел CDATA необходим в теге script?
Ответ 5
Для допустимого 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>
.
Ответ 6
Google "зачем комментировать javascript в html", сначала попал:
http://www.howtocreate.co.uk/tutorials/javascript/incorporate
Это больше не нужно. Все текущие браузеры знают теги script и как обрабатывать их содержимое, поскольку они были частью HTML с HTML 3. Браузеры, которые не понимают HTML 3 или скрипты (они практически никогда не используются сейчас) w370 > как будто это было содержимое страницы. Вы можете скрыть script от них, комментируя свой script со стандартными комментариями HTML.
Ответ 7
99% времени, они больше не нужны:) Если вы не запускаете какой-то действительно старый браузер!
Ответ 8
Комментирование кода JavaScript таким образом также может препятствовать индексированию содержимого в поисковых системах и может быть желательно в некоторых случаях.
Например, некоторое время назад я нашел много проблем с "страницей не найден" в инструментах для веб-мастеров Google. После простого анализа URL-адресов я выяснил, что Google получает все пути-подобные переменные из моего JS-кода (например, "имя/001" ), присоединил их к текущему url (mysite.info/staff) и попытался запросить приведенные URL-адрес. Без успеха, конечно.
После вставки <!-- //-->
в некоторые из блоков JS все "страницы не найдены" исчезли в течение месяца или двух.