W3C's Document Object Model Core specify the following regarding the
Attrvalue as a string, or the empty string if that attribute does not have a specified or default value."
Firefox and Safari both return
null when the attribute is inexistent or missing.
Opera conformed to the specs until version 9 which also returns
A while ago, Safari had implemented a standard compliant behavior, but quickly backed-up as <cite>it broke many sites, because historically IE and Mozilla have returned null in this case.</cite>
There is no plans for Firefox to change it's current behavior.
So there is probably going to be a move to change the W3C specs in this regard.
getAttribute to continue returning
null on non-existent attributes.
If you actually want to check whether an attribute exists or not, use
hasAttribute in standard compliant browsers and
(getAttributeNode(attr) && getAttributeNode(attr).specified) in IE. Both will return a boolean.