Могу ли я рассчитывать на то, что амперсанд без экранирования будет корректно отображаться в текстовой области?

Я только что заметил подпрограмму в нашем коде, которая неправильно экранирует амперсанд в текстовой области:

<textarea>Arts & Crafts</textarea>

Что меня удивляет, так это то, что это работает в каждом браузере, который я проверяю. Есть ли неписаное правило об амперсандах внутри текстовых полей? Если так, то это правило, от которого я могу зависеть? Или это просто удобство, которое обеспечивают браузеры, чтобы удостовериться, что ваша неисправная страница отображается, и нет никаких гарантий вообще?

2 ответа

Решение

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

Это даст вам проблемы, когда текст, например, <textarea>Use &egrave; to show an è</textarea>, потому что это сделает &egrave; как è тоже. Так что в этом случае амперсанд должен быть экранирован.

Однако это одна из немногих ошибок, которые решаются одинаково в любом браузере. Лучше не делать никаких ошибок. Это даст вам наибольшие шансы на успех.;)

Это просто удобство; автономный & неверный HTML и XHTML.

Другие вопросы по тегам