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:
Post a Comment