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
You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.