HTML 4.01 仕様は、無効なドキュメントに関する注意事項で、ブラウザが「認識できない属性に遭遇した場合、属性の仕様全体 (つまり、属性とその値) を無視し」、「サポートを提供する」ことを推奨しています。そのようなエラーをユーザーに通知するため」.
実際には、ブラウザーは、HTML だけが考慮される限り、未知の属性を無視します。ただし、CSS では無視されません。[city]
最新のブラウザーでは、要素に一致するような属性セレクター。そして、JavaScript ではそれらを無視するのではなく、適合する属性とは別の扱いcity
で、要素ノードのプロパティにはなりませんが、プロパティのプロパティになるため、メソッドとメソッドattributes
を介して使用できます。getAttribute
setAttribute
このような処理は HTML 4.01 仕様に違反しており、すべてのブラウザーで行われるという保証はありません。HTML5 ドラフトは、この問題に対処していないようです。解析エラーと廃止された機能を処理するためのルールを指定していますが、未定義の属性は指定していません。
さらに、いつか将来の仕様やブラウザがcity
属性名として認識し始めるかもしれませんが、おそらくあなたの考えとは深刻に矛盾するでしょう。不可解な名前を使用すると、このような衝突の可能性が非常に小さくなる可能性があります。しかし、属性はサイト固有の拡張を目的としており、標準属性と競合しないことが保証されているため、 を使用するとdata-city
問題が回避されます。data-*