[whatwg] cloneNode and HTML elements

Maciej Stachowiak mjs at apple.com
Thu Sep 10 04:45:42 PDT 2009


On Sep 10, 2009, at 2:15 AM, Robert O'Callahan wrote:

> On Thu, Sep 10, 2009 at 7:41 PM, Maciej Stachowiak <mjs at apple.com>  
> wrote:
>
> Reference for cloneNode:
> http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-3A0ED0A4
>
> My assumption based on the spec is that no element-specific internal  
> state should be copied, the cloning should only be DOM-wise.
>
> It's not obvious to me that DOM 3 Core's silence means nothing else  
> is copied,

That's how I would tend to interpret its silence, unless some other  
spec says otherwise.  But to be fair, a the DOM specs are sometimes  
vague on the details. For example, it doesn't explicitly say what  
localName, prefix or namespace a cloned element gets. Or that what  
text contents cloned Text nodes should have.


> since non-DOM state is outside its scope.

DOM2 Core also defines cloneNode, and the associated DOM2 HTML does  
not impose any additional requirements for the HTML elements that have  
internal state. That would tend to support the theory that copying  
element-specific non-DOM state was not intended.

>
> I wonder if authors would be surprised if the non-DOM state is not  
> copied.

We haven't had any bug reports about it in WebKit, and we don't clone  
any internal state. We do have a bug report on cloneNode for  
Documents, where our choice of implementation-defined behavior is to  
return null. We'll likely have to fix that.

My mental model of cloneNode is that it's equivalent to creating a  
brand new element with the right name and namespace, adding the  
appropriate attributes, and if a deep clone, copies of its children.  
So I would not be surprised. Others may have a different mental model.


Regards,
Maciej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20090910/28f86990/attachment-0002.htm>


More information about the whatwg mailing list