attributes

attributes 属性 (DOM)

仕様書

属性の順序

[21] 要素属性同士には順序がありますが、その順序は意味を持ちません。 これは少し複雑です。

[22] HTML文書XML文書では開始タグ属性指定並び属性が何らかの順序で記述されます。 これは文字列である以上、避けられないことです。 このとき、記述の順序はありますが、その順序には意味がなく、 順序を変えても解釈が変わることは原則ありません。 例外として、同じ属性名属性が複数あるときは、 最初のもの以外が無視されます。

[23] DOM では要素属性並び属性が格納されますが、 属性並び並びです。並びには順序がありますが、 その順序には意味がなく、順序を変えても解釈が変わることは原則ありません。 例外として、同じ属性名属性が複数あるときの挙動に影響します。 また、 attributes NamedNodeMap列挙順序となります。 属性並びの変更が発生する処理は DOM Standard で定められていて、何もしていないのに勝手に順序が変わることはありません。

[25] HTMLの構文解析XMLの構文解析では、 属性指定並び中の属性の順序が DOM属性並び中の属性の順序にどう反映されるか、 仕様上定められていません。 これは仕様策定当時の実装がばらばらだったことに起因します >>7, >>5

[26] HTMLの直列化XMLの直列化では、 DOM属性並び中の属性の順序が HTML / XML属性指定並び中の属性の順序にどう反映されるか、 仕様上定めれていません。 ただし HTML では安定していることが要求され >>24、 明文規定がないものの XML でも同様です。 ここでいう安定とは、例えば innerHTML 取得器を連続して何度も実行したときに、 同じ順序で直列化されるということです。


[7] HTML文書中の属性の順序は、 FirefoxIE7 は逆ソース順、 Chrome はソース順となっています。

[27] innerHTML設定器HTML を与え、 直後に innerHTML取得器HTML を取得すると、 Chrome は試した限り確実に元の順序で属性が並んでいますが、 Firefox は元通りだったり変わっていたり法則性が掴めません。

[28] 今となってはもうこんな非互換性を残しておく意味は皆無だし、 全部ソース順 = 属性並び順になるよう整理してほしいもんだなあ。

[6] >>5 DOM4 では属性の順序が追加順と規定されている。

[13] object 要素applet 要素プラグインに渡す順序はソース順となっています >>3, >>14

デモ

[1] attributes 内の属性節点の順序

メモ

[8] Bug 17176 – Element attributes should not be required to be stored in an ordered list, .innerHTML remains unspecified ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=17176

[9] Bug 17871 – Element attributes should not be required to be stored in an ordered list ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=17871

[10] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#the-attributes-attribute

[11] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#attribute-forwarding

[12] Bug 21986 – Element.attributes needs to have a named getter ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=21986

[15] 13913 – Attributes don't have an order ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=13913

[16] Editorial: define attribute list in terms of Infra's list (annevk著, ) https://github.com/whatwg/dom/commit/f88c7a087268f5a9cf55b92c40754107e696d705

[17] Remove <applet> (zcorpan著, ) https://github.com/whatwg/html/commit/b9b9d60f9451c05f8e8d542e4094f987ae1a5fb8

[18] Make attribute order not matter for <progress> (annevk著, ) https://github.com/whatwg/html/commit/6bf4f3cf2fbfb265fcd9f079a371a7cc68d4fe62

[19] Spec for `progress` element either specifies attribute order dependency or can be easily misread that way · Issue #3066 · whatwg/html () https://github.com/whatwg/html/issues/3066

[20] Make attribute order not matter for <progress> by annevk · Pull Request #3067 · whatwg/html () https://github.com/whatwg/html/pull/3067