Подтвердить что ты не робот

Требуется JavaScript <! -//->?

Я просто хочу спросить, что говорит название. Следующая строка требуется в тегах HTML script?

<!--
//-->

Если я не использую их, что произойдет?

4b9b3361

Ответ 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('&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery-latest.min.js&quot;&gt;&lt;/script&gt;');
</script>

Обратите внимание, что комментарии JS используются для предотвращения попытки JavaScript выполнить команды <!-- и -->, которые могут быть законными операторами (a<!--b и a-->b).

Вместо того, чтобы объяснять, что на самом деле они должны были превратить каждый " в &quot;, < в &lt;, > в &gt; и & в &amp;.

"Современное" исправление заключается в использовании символьного элемента данных, который сообщает документу, что все содержащее должно рассматриваться как буквальный текст:

<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 все "страницы не найдены" исчезли в течение месяца или двух.