экранирование внутри значения атрибута тега html

у меня возникли проблемы с пониманием того, как экранирование работает внутри значений атрибутов тега html, которые являются javascript.

Меня привели к считают, что вам всегда следует избегать & '"<>. Итак, для javascript в качестве значения атрибута я попробовал:

<a href="javascript:alert(&apos;Hello&apos;);"></a>

Это не работает. Однако:

<a href="javascript:alert(&#39;Hello&#39;);"></a>

и

<a href="javascript:alert('Hello');"></a>

действительно работают во всех браузерах!

Теперь я полностью запутался. Если все значения моих атрибутов заключены в двойные кавычки, означает ли это, что мне не нужно избегать одинарных кавычек? Или apos и ascii 39 технически разные символы? Таким образом, для javascript требуется ascii 39, но не apos?

18
задан Deduplicator 1 February 2015 в 16:36
поделиться