Следующая практика довольно распространена во встроенном JavaScript, с которым мне приходится работать:
<script type="text/javascript">
<!--
// Code goes here
//-->
</script>
Я знаю, что цель состоит в том, чтобы запретить браузерам, несовместимым с JavaScript, отображать исходный код, но остается ли это лучшей практикой сегодня? Подавляющее большинство используемых сегодня браузеров могут интерпретировать JavaScript; даже современные мобильные устройства обычно не вызывают проблем.
Что касается вопроса «почему бы и нет?» вопрос: мне недавно пришлось потратить несколько часов на отладку проблемы, когда кто-то остановился на '//' перед '->' в конце тега скрипта, скрытого глубоко в некоторых страницах, и это вызывало загадочный JavaScript ошибки.
Чем ты занимаешься? Это все еще считается «лучшей практикой»?
javascript
html
АндрейМ
источник
источник
Ответы:
Важно то, что в настоящее время не имеет значения, поддерживает ли конкретный браузер JavaScript или нет (очевидно, что подавляющее большинство поддерживает) - это не имеет значения, потому что почти все понимают блоки сценариев, а это означает, что они знают, что нужно игнорировать JavaScript, даже если они не могут интерпретировать это.
Мэтт Круз дает немного более подробное объяснение на своем сайте JavaScript Toolbox, почему конкретно не использовать HTML-комментарии в блоках скрипта.
Цитата с той страницы:
Не используйте HTML-комментарии в блоках сценария
В древние времена javascript (1995 г.) некоторые браузеры, такие как Netscape 1.0, не поддерживали или не знали тега сценария. Поэтому, когда был впервые выпущен javascript, требовался метод, позволяющий скрыть код от старых браузеров, чтобы они не отображали его как текст на странице. «Хакер» заключался в использовании HTML-комментариев в блоке сценария, чтобы скрыть код.
Использование HTML-комментариев в скрипте - плохо
Сегодня ни один из широко используемых браузеров не игнорирует тег <script>, поэтому скрытие источника javascript больше не требуется. На самом деле его можно считать вредным по следующим причинам:
источник
Я перестал этим заниматься. В какой-то момент вам просто нужно отпустить свою NCSA Mosaic.
источник
В соответствии с Рекомендацией W3C в основном было полезно скрыть данные сценария от АГЕНТОВ ПОЛЬЗОВАТЕЛЯ.
Цитата со страницы W3c :
Комментирование сценариев в JavaScript Механизм JavaScript позволяет строке
"<!--"
находиться в начале элемента SCRIPT и игнорирует дальнейшие символы до конца строки. JavaScript интерпретирует «//» как начало комментария, продолжающегося до конца текущей строки. Это нужно, чтобы скрыть строку «->» от парсера JavaScript.источник
Нет, это пережиток временного решения, использованного при первом введении элемента скрипта. Сегодня ни один браузер не может понять элемент сценария (даже если он понимает его как «сценарий, который следует игнорировать, потому что сценарии отключены или не поддерживаются»).
В XHTML они активно вредят.
Некоторое время назад я писал кое-что об истории этого .
источник
Некоторое время назад перестал этим пользоваться. Кроме того, по словам Дугласа Крокфорда , вы можете удалить атрибут type из своих тегов сценария, поскольку единственный язык сценариев, доступный в большинстве браузеров, - это JavaScript.
источник
Если вы печатаете вручную, я предлагаю вам всегда использовать внешние js-файлы, это очень поможет.
Относительно вашего беспокойства: большинство браузеров сегодня безопасны для JavaScript. Однако иногда люди могут писать простые парсеры для прямого извлечения HTML-кода - и я должен сказать, что безопасная цитата действительно полезна для этих клиентов. Также некоторые клиенты, не использующие JS, такие как старый Lynx, также получат от этого выгоду.
источник
Если вы не добавляете буквальный текст между тегами сценария, то есть загружаете сценарии из файлов src, о комментариях можно забыть.
источник
Я бы рекомендовал использовать раздел CDATA, как описано в этом вопросе .
источник
Я перестал это делать давным-давно. Вам это действительно не нужно в наши дни.
источник
Я не делаю этого, но на днях я пошел проверить свой защищенный паролем сайт на w3c. Поэтому мне пришлось использовать их метод прямого ввода. Он пожаловался на мой javascript, поэтому я вернул комментарии, все было в порядке.
источник