Есть ли недостатки в написании `<` вместо `<` - PullRequest
0 голосов
/ 18 октября 2018

Я недавно узнал, что в HTML можно не использовать точку с запятой в символьных сущностях (например, &lt для создания символа < вместо &lt;).

Я нашел несколькодействительно старые сообщения о переполнении стека, в которых упоминалось, что действительно старые браузеры (например, IE7) могут иметь проблемы с такими символами.Однако я не смог найти ни в Интернете, ни в результате тестирования каких-либо проблем с такими символами в современных браузерах.

Так есть ли вообще причина не использовать их?

1 Ответ

0 голосов
/ 18 октября 2018

Это полностью зависит от того, как простит браузер / движок рендеринга, и не является свойством HTML.Все сущности должны заканчиваться точкой с запятой, или у вас неверный синтаксис.WHATWG «HTML Living Standard» смущает, считая эту точку с запятой частью названия, делая ее необязательной в Developer Edition.Но полный текст стандарта / W3C HTML5 более понятен: «Имя должно заканчиваться символом U + 003B SEMICOLON (;).»

Исторически точка с запятой быланеобязательный, когда за символьной сущностью сразу не следует символ имени.Например, &pound? будет работать, потому что ? не является символом имени (т. Е. Символ, разрешенный в именах), но &pound4 не будет, потому что 4 является символом имени, делая pound4 именем сущности, которое не определено,Это правило является частью наследства SGML в HTML, одна из немногих вещей, где браузеры фактически применяют особенности SGML.

При этом всегда считалось хорошей практикой завершать ссылки на сущности точкой с запятой.XML и, следовательно, XHTML, делают его обязательным.

Именно поэтому современные методы работы с браузерами допускают пропуск точек с запятой, как в «классическом» HTML, но только для ограниченного набора ссылок на символы, обозначающих символы ISO Latin 1 (символы сНомер Unicode меньше 256 в десятичном или FF в шестнадцатеричном).Это был оригинальный набор ссылок на сущности, и поэтому такие ссылки широко использовались без точки с запятой.Таким образом, эти практики являются компромиссом: они хотят поощрять использование указанной нотации, но не аннулировать большую часть старых страниц, которые не соответствуют и делают браузеры не в состоянии правильно их отображать.

Черновики HTML5 занимали различные позициина этом, но HTML5 требует точку с запятой во всех случаях, даже в синтаксисе HTML.Отсутствие точки с запятой определяется как ошибка синтаксического анализа, что означает, что обработка ошибок четко определена (объект должен быть распознан), но браузеры могут прекратить синтаксический анализ при первой ошибке синтаксического анализа.

В соответствии с Рекомендация W3C

В SGML возможно исключить конечное ";"в некоторых случаях после ссылки на символ (например, при разрыве строки или непосредственно перед тегом).При других обстоятельствах это не может быть устранено (например, в середине слова).Мы настоятельно рекомендуем использовать «;»во всех случаях, чтобы избежать проблем с пользовательскими агентами, которым требуется этот символ.

В то время как W3C Working Draft сообщает

Амперсанд долженследовать за одним из имен, указанных в §8.5 Раздел именованных символов, используя тот же регистр.Имя должно заканчиваться символом SEMICOLON U + 003B (;).

Поскольку точка с запятой требуется для проверки W3C, и поскольку она работает во всех браузерах, ее следует использовать.Абсолютно незначительное количество страниц, которые вы сэкономите, не используя их, не стоит того, чтобы они не отображались правильно во всех браузерах.

Вот два ответа на похожие вопросы по этой теме: Ответ 1 Ответ 2

...