Актуально ли по-прежнему использовать тег комментариев HTML вокруг кода JavaScript?
я имею в виду
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
javascript
browser
Rajakvk
источник
источник
Ответы:
Комментарии HTML, т.е.
<!-- -->
, больше не нужны. Они были предназначены для того, чтобы браузеры, которые не понимали<script>
тег, могли корректно деградировать. Эти браузеры, например. Netscape 1.x больше не встречается в дикой природе. Так что больше нет смысла помещать HTML-комментарии в теги скрипта.Если вы хотите, чтобы ваш HTML проверялся как XHTML или XML, вы, вероятно, захотите использовать закомментированный тег CDATA.
<script type="text/javascript"> //<![CDATA[ document.write("Hello World!"); //]]> </script>
Причиной этого является то, так что ваши
<
,>
,&
,"
и'
которые являются частью кода яваскрипта не должны быть закодированы как<
,>
,&
,"
и'
соответственно.источник
</script>
которой они обычно разбиваются на</scr
иipt>
.]]>]]<![CDATA[>
☺<script>
правильно понимают этот материал), то я не вижу значительного преимуществаCDATA
блока над традиционным комментарием. Единственная разница в том, есть ли у них<script>
официальный контент или нет - а что касается поисковых систем, мы можем захотеть, чтобы в них не было контента ...Не совсем, если вы не ориентируетесь на браузеры 20-летней давности.
источник
Лучше просто избегать использования JavaScript в теле. Это упрощает обновление, устраняет необходимость в комментариях и заставляет планировать пользователей без поддержки JavaScript, а также пользователей с включенным JavaScript.
источник
.js
файлах , а не в HTML, делает его труднее для обновления , так как.js
файлы могут быть в кэше.<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
Не так, как вы это делаете, нет.
<! - обрабатывается так же, как // в javascript, поэтому ваш код должен выглядеть так:
<script type="text/javascript"> <!-- document.write("Hello World!"); //--> </script>
... разница с вашим в том, что редкий непонятный браузер, который может не понимать тег скрипта, будет печатать открывающее // на экране, что, в первую очередь, противоречит цели размещения тега комментария там.
Вот дополнительная информация об этом здесь, если вам интересно: http://www.javascripter.net/faq/comments.htm
Однако, в конце концов, даже очень непонятные браузеры, которые не поддерживают javascript по умолчанию (например, HTMLLayout browse или Netsurf), знают, что лучше не отображать текст между тегами скрипта, поэтому нет, он больше не актуален ни в коем случае. Однако все браузеры, которые могут вас заинтересовать, понимают синтаксис <! -, поэтому нет никакой реальной необходимости безумно беспокоиться об удалении его из того, что у вас уже есть, потому что это действительный js, просто не забудьте не добавлять его в следующий раз.
источник
Даже в современных браузерах это может быть полезно. Сегодня я столкнулся с этой проблемой именно потому, что хотел избежать встраивания javascript в свой html.
У меня есть html-страница, на
http://host/variable_app_name/pagename
которойvariable_app_name
может быть много значений (ну, переменная). Если он хочет получить доступ к статическим файлам, он должен использовать URL-адрес, напримерhttp://host/static/variable_app_name/filename
, поэтому я не могу указать местоположение статического файла без предварительного просмотра местоположения браузера, чтобы найти значениеvariable_app_name
.Чтобы связать с основным файлом javascript, я делаю следующее:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); </script>
Приведенный выше код взорвется даже в последней версии Chrome, потому что тег скрипта будет завершен в середине строки javascript, а оставшаяся часть строки будет интерпретироваться как html, например:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"> </script> \n'); </script>
Есть много способов исправить это, но мне нравится использовать html-комментарий.
С комментарием html:
<script type="text/javascript" > <!-- var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n'); --> </script>
Разрыв строки javascript:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n'); </script>
Создайте и добавьте тег скрипта вместо использования document.write:
<script type="text/javascript" > var variable_app_name = window.location.pathname.split('/')[1]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = '/static/'+variable_app_name+'/pagename.js'; document.head.appendChild(script); </script>
Мне нравится использовать html-комментарий, потому что это краткое изменение, и его не нужно копировать или продумывать для каждого связанного файла.
источник