私はHtmlAttributeEncodeのドキュメントを読んでいました。これは、二重引用符で囲まれたHTMLを属性として表示するときに使用することを意図しています。属性をレンダリングするときに<と&をエスケープする必要があるのはなぜですか?
<INPUT Value="This value must be escaped so that it doesn't contain any quotes">
私の知る限り、私はエスケープする必要があります唯一の文字は二重引用符になります。ブラウザは、その文字列内の他のすべてを属性内に含めることができなければなりません。
なぜドキュメントはこれを言っていますか?
HtmlAttributeEncode方法は、同等の文字エンティティにのみ引用符( ")、アンパサンド(&)、および左山カッコ(<)に変換。それはかなり速くHtmlEncodeメソッドを超えています。
そして、実際には、this poor guyで見ることができるように、それらをエスケープしません。
この状況で<と&文字をエスケープするために何らかの理由があるのでしょうか?それはHTML5の仕様で要求されますか?区切りが始まり、この文字列で終わるところ私の人間の目では
私は簡単に見ることができます:
<INPUT value="You & I can both easily see that 5 < 6!">
限り、二重引用符のシーケンスが適切に閉じられている(二重引用符がエスケープされている)として、私はドン」なぜ他の文字をHTMLでエンコードする必要があるのか理解できません。スペックから
理由:これらは空白のためのHTMLエンコードされた文字列、< and >ある < >、 ブラウザがタグとして< or >が..ので、あなたがそれらを使用するべきではないと思うかもしれないか、 –
が了解それらをエスケープする必要があります。ただし、属性にはHTMLではなく平文文字列のみが含まれます。マークアップ ' '文字列の始まりと終わりのあいまいさがなく、何かをエスケープする理由はありません –
残念ながら、残念ながらそれはブラウザコードが動作する方法ではありません。 '<'に出会うと、別のタグの開始と考えるようになるかもしれません –