On Jun 6, 2008, at 2:20 PM, Travis Leithead wrote:

While implementing some improvements to getAttribute in IE8, we actually checked in code that is conformant to what the spec says about the return value:

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

Once this code was in, we immediately hit app and site compat problems because we always returned a string--an empty string--if the "attribute [did] not have a specified or default value".

As it turns out in practice, all browsers actually implement this a slightly different way: they return the value as a string, or null if the attribute does not have a specified or default value. In other words, if there is no entry for the requested attribute in the NamedNodeMap, then null is returned.

IE8 is being fixed to be conformant with what everyone else has implemented, I just thought I would pass this along to whomever is doing the DOM L3 Core Second Edition so that it might be recorded in that spec, an errata, or so that we can discuss.

Anne and I suggested an errata for this a few years back, but the DOM folks were not receptive at the time, out of consideration for server- side Java DOM implementations:


See the thread for more discussion.

I also at the time raised another compatibility issue that I thought should be fixed in errata:


The short version is that DOM forbids inserting nodes into a different document than their ownerDocument, but browsers allow it (in at least some cases).

These two issues are Safari's only failures in the official DOM Level 1 Core test suite. I believe neither of these failures can be fixed without significantly breaking web compatibility.


Reply via email to