2月
15th
火
15th
URLの&を実体参照してない時の注意
HTMLの文字参照は<や<のように「&」で始めて「;」で終わらせるものだと思っていたら、どのブラウザも最後の「;」がなくても文字参照として扱うらしい。
問題になるのはURLのリンクに「&」がある場合。
<a href="foo?foo=1&bar=2">
本来&bar=とすべき所をサボると、&以降=までの文字が文字参照に該当する場合に変換される。例えば
<a href="http://example.com/foo?foo=1©=2">
は©として扱われ
http://example.com/foo?foo=1©=2
に飛ぶ(Chromeを除く。Chromeは文字実体参照では問題ないが、©のような数値文字参照で同様の問題が起こる(Mac版9.0.597.102で確認))。
<のような結果がURLエンコード出来る文字については、Firefoxはそのまま「<」に、SafariやOperaでは「%3C」(URLエンコードされた「<」)になる模様。
HTML 5の仕様
If the markup contains (not in an attribute) the string
I'm ¬it; I tell you, the character reference is parsed as “not”, as in,I'm ¬it; I tell you(and this is a parse error). But if the markup wasI'm ∉ I tell you, the character reference would be parsed as “notin;”, resulting inI'm ∉ I tell you(and no parse error).
まあちゃんとHTMLに沿って書けばいいと思います><