2009-06-21

getAttributeの実装が規格通りではない

W3Cの規格では、getAttributeの戻り値は、以下のように規定されている。

The Attr value as a string, or the empty string if that attribute does not have a specified or default value.

なるほど、指定された属性が場合は、empty stringを返すのだな。と思って、ある属性があるかどうかを判断するコードを、そのように書いた所、何故か動かなかった。不思議に思って調べてみると、どうやら、すべてのブラウザで、nullを返している。何故だろう。W3Cの規格では、nullを返すべき所は、ちゃんとnullを返すように書かれている。何故ここは、empty stringを返すと規定されていて、しかもすべてのブラウザで、nullを返すように実装されているのか。不思議だ。

こうなってくると、規格が間違っているのじゃないかと思わざるをえない。

追記:https://developer.mozilla.org/En/DOM/Element.getAttribute

やれやれ。まあ、今さら変更すると動かなくなるコードばかりなんだろうなぁ。属性があるかどうかを確かめるには、hasAttribute()が使える。

主要なブラウザでテストした結果。属性がない場合はnullが、属性はあるが、""を指定してある場合は、empty stringが帰ってくる。なんとも面倒な事だ。

No comments: