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

Должен ли я использовать комментарии HTML для капсулирования блоков кода JavaScript?

Несколько лет назад меня учили, что блоки кода JavaScript, встроенные внутри HTML, всегда должны быть закрыты внутри комментариев HTML следующим образом:

<script type="text/javascript">
<!--
var hello = "world";
-->
</script>

Мне сказали сделать это, но я никогда не понимал, почему. Кажется, это хакеры для использования комментариев HTML, поэтому в настоящее время я начал использовать код JavaScript внутри блока script без комментариев HTML:

<script type="text/javascript">
var hello = "world";
</script>

Итак, мой вопрос: следует ли использовать комментарии HTML для блокировки блоков кода JavaScript? Можно ли просто написать script без комментариев? Я имею в виду, что я что-то рискую, когда не оставляю теги комментариев?

4b9b3361

Ответ 1

Комментарий HTML был предназначен, чтобы скрыть JavaScript из старых браузеров, которые не поняли элемент <script> и вместо этого отображают его содержимое на странице. Это было еще в середине 90-х годов, iirc. В настоящее время вы можете смело предположить, что браузеры той эпохи больше не присутствуют в Интернете и не оставляют комментарии.

В этой приятной истории можно найти здесь:

Общее правило, касающееся тегов HTML, которые не понимают браузеры, заключается в том, что браузер должен полностью игнорировать тег и обрабатывать содержимое страницы, как если бы этот тег не был там. Это означает, что когда Netscape 2 сначала ввел JavaScript (или LiveScript, как он был тогда тогда), необходимо было поместить комментарий HTML вокруг фактического script, чтобы скрыть код из других браузеров, которые не понимали script, и поэтому он должен был отображать код, а не запускать его.

Язык JavaScript был специально написан, чтобы принять начало комментария HTML как самое первое в script и игнорировать его, чтобы комментарий HTML мог использоваться, чтобы скрыть script от людей, использующих Netscape 1, Mozaic, Internet Explorer 1, Internet Explorer 2 и другие браузеры аналогичного урожая, ни один из которых никто не использует. Это эти доисторические браузеры (в терминах JavaScript), которые подразумеваются, когда вы видите ссылки в устаревших JavaScript-руководствах, чтобы обернуть ваш JavaScript внутри комментария HTML, чтобы скрыть его от "старых" браузеров.

В Internet Explorer 3 Microsoft представила свой собственный эквивалент JavaScript, который они называют JScript. С тех пор все браузеры, по крайней мере, признали тег script и более современные браузеры (Netscape 2+, IE3 + и т.д.), Комментарий HTML больше не требуется. Поэтому, как только все ваши посетители обновили использование Netscape 2, Internet Explorer 3, или более поздним браузером, чем любой из этих двух, комментарий из script становится избыточным кодом.

Ответ 2

Прямо из источник

18.3.2 Скрытие script данных от пользовательских агентов

Пользовательские агенты, которые не распознают элемент script, скорее всего, отображают это содержимое элемента как текст. Некоторые сценарии, в том числе для языков JavaScript, VBScript и Tcl, позволяют операторам script прилагаться в комментарии SGML. Таким образом, пользовательские агенты, которые не распознают элемент script, игнорируют комментарий, в то время как интеллектуальные скриптовые механизмы поймут, что комментарии script должны быть выполнены.

Другим решением этой проблемы является сохранение сценариев во внешних документах и ​​обращение к ним с помощью атрибута src.

Комментирование скриптов в JavaScript Механизм JavaScript позволяет создать строку "<!--" в начале элемента script и игнорировать дальнейшие символы до конца строки. JavaScript интерпретирует "//" как начало комментария, распространяющегося до конца текущей строки. Это необходимо, чтобы скрыть строку "-->" от парсера JavaScript.

<SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>

Кроме того, если вы действительно хотите понять, что все это значит, прочитайте эту отличную статью. Он длинный, , но стоит того.