Нужно ли мне избегать цитат внутри значения атрибута html? Какие символы разрешены?Какие значения можно поместить в значение атрибута HTML?
Действительно ли это?
<span title="This is a 'good' title.">Hi</span>
Нужно ли мне избегать цитат внутри значения атрибута html? Какие символы разрешены?Какие значения можно поместить в значение атрибута HTML?
Действительно ли это?
<span title="This is a 'good' title.">Hi</span>
Если значение атрибута цитируемого (начинается и заканчивается двойными кавычками "
), то допускаются любые символы, за исключением двойных кавычек и амперсандов, которые должны быть указаны как "
и &
соответственно (или эквивалентные ссылки числовых сущностей, "
и &
)
Вы можете также использовать одиночные кавычки вокруг значения атрибута. Если вы сделаете это, вы можете использовать буквенные двойные кавычки в атрибуте: <span title='This is a "good" title.'>...</span>
. Чтобы избежать одиночных кавычек в таком значении атрибута, вы должны использовать ссылку на числовой объект '
, поскольку некоторые браузеры не поддерживают именованный объект, '
(который был not defined in HTML 4.01).
Кроме того, вы также можете создавать атрибуты без кавычек, но ограничивает набор символов, которые вы можете иметь в ней гораздо дальше, запретив использование пространств, =
, '
, "
, <
, >
, `
в атрибуте ,
Для получения более подробной информации см. the HTML5 spec.
Каково обоснование необходимости избегать амперсандов '&'? Что это может означать? –
А, ок, это потому, что сам амперсанд будет разбираться как объект в противном случае. –
Амперсанд является допустимым символом в значении атрибута. Спецификация запрещает «неоднозначный амперсанд», который является комбинацией (амперсанд + буквенно-цифровой символ + точка с запятой), где он не соответствует ни одной из названных ссылок. '' - действительный '' - недействительный – Semra
Значение может быть что угодно, но вы должны экранировать кавычки ("
, '
), теги разделители (<
, >
) и амперсанд (&
).
Это не выглядит правильно (см. ссылку на спецификации в других ответах). – Christophe
он, кажется, не запрещает <, > и т. Д. Спецификация запрещает только амперсанды. – arviman
Это действительно. Однако, если вы должны были ставить двойные кавычки внутри, вы должны бежать с "
, как это:
<span title="This is a "good" title.">Hi</span>
Нет, вам не нужно, чтобы избежать одинарные кавычки внутри двойных кавычек.
Эта страница определяет действительные атрибуты двускатной тега:
http://www.w3.org/TR/html401/struct/global.html#edef-SPAN
Эта страница определяет допустимые символы разрешены в атрибуте название:
Да, это нормально. Проблема в том, что при попытке поставить двойную цитату внутри атрибута. как это:
<span title="This is a "bad" title.">Hi</span>
Вы можете обойти эту проблему с помощью HTML-сущностей, как так:
<span title="This is a "good" title">Hi</span>
Здесь функция проверки с помощью регулярного выражения, основываясь на ответ Брайана Кэмпбелла, для худшего случая неупомянуты атрибут.
validator: function (val) {
if (!val || val.search(/['"=<>`]+|(&\s)+/) === -1) return true;
return 'Disallowed characters in HTML attributes: \' " = < > ` &.';
},
Заканчивать атрибут название на самой последней спецификации HTML5: http://dev.w3.org/html5/spec/Overview.html#the-title-attribute Я считаю, что название атрибута используется тип CDATA который определен здесь: http://www.w3.org/TR/html401/types.html # type-cdata –
Просит об амперсанде только: http://stackoverflow.com/questions/3705591/do-i-encode-ampersands-in-a-href (пришел раньше, к сожалению, так что не обманывать ...) –