Re: node.insertBefore(child, child)

On Mon, 2004-01-05 at 16:32, Ian Hickson wrote:
> [...]
> I am confused. What exactly does Xerces do?

It "works". In other words, it will remove the child, and insert it
again, with all the appropriate events.

> The spec says:
> 
> # If the newChild is already in the tree, it is first removed.
> 
> I interpreted "first" as meaning that was the initial step of the
> algorithm.

The "first" was necessary in order to specify the order of the events
that are generated underneath, not as a way to specify an algorithm.

> [...]
> What's the use case for doing what the spec currently says?

The use case for not changing the current behavior without breaking
existing implementation is simple: as Joe mentioned, this is a DOM Level
1 erratum and we don't modifying DOM Level 1 unless a really good
reason. node.insertBefore(child, child) was already discussed in January
2001 by the DOM WG. We did contact some implementers at that time. 2
implementations were known to do a no-op, 2 or 3 were considering the
case valid (i.e. it "works"), 1 was raising an exception. We declared
the first 2 and the last one invalid according to the specification and
didn't change anything. With your number and an update, we now have 4
implementations doing nothing, 3 or 4 considering the case valid (it
"works"). The WG is now rendering the case "implementation dependent".
It is better imho that the previous status quo (and will avoid dealing
with this case in 2006 :).

Philippe

Note to myself: the FAQ needs to be updated to match this
"implementation dependent" behavior

[1] http://www.w3.org/DOM/faq.html#insertBeforeSelf

Received on Monday, 5 January 2004 18:00:57 UTC