W3C home > Mailing lists > Public > www-dom@w3.org > October to December 2011

Re: [DOMCore] ownerDocument of a Document object

From: David Flanagan <dflanagan@mozilla.com>
Date: Tue, 04 Oct 2011 10:26:18 -0700
Message-ID: <4E8B41BA.5030204@mozilla.com>
To: www-dom@w3.org
Back in June I asked for clarification of the ownerDocument of a 
Document object:

On 6/3/11 2:34 PM, David Flanagan wrote:
> Both Firefox and Chrome make the ownerDocument of a Document node null.
>
> The June 3rd spec just says:
>> The |ownerDocument| attribute must return the |Document 
>> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#document>| 
>> node that the context object 
>> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#context-object> 
>> is associated with, or null if there is none. 
> The meaning of this depends on whether a node is "associated with" itself.
>
> But the (new, I think) algorithm to ensure that two node are in the 
> same document requires document.ownerDocument === document, or it will 
> fail in the case of inserting a doctype into a document.
>
>     David
>
Jonas wrote:
> DOM Level 3 pretty explicitly says that document.ownerDocument === null
>
> http://www.w3.org/TR/DOM-Level-3-Core/core.html#node-ownerDoc
>
> However this was a part of the spec that I never liked, and I'd love
> to change it. Are there browsers that set document.ownerDocument ===
> document?
>
> / Jonas

And Aryeh wrote:
> IE9, Firefox 5.0a2, Chrome 13 dev, and Opera 11.11 all say null.  I
> agree that this is obnoxious.  I wound up writing a helper function
> for my test suites that's basically function(node) { return
> node.nodeType == Node.DOCUMENT_NODE ? node : node.ownerDocument }.
> But it's not clear we can change it at this point.
And then the thread devolved into a discussion of mutation events... :-)

Anyway, the DOM 4 spec is now explicit:
>
> The |ownerDocument| attribute must return the node document 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-node-document>. 
>
>
> The node document 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-node-document> 
> of a document 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-document> 
> is that document 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-document> 
> itself.
>
> All nodes 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-node> have 
> a document 
> <http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#concept-document> 
> at all times.
>
The reason I'm reviving this thread is that we've implemented this, and 
have discovered that having document.ownerDocument === document breaks 
jQuery (1.6.4 and presumably other versions as well)  We're filing a bug 
against jQuery, but I'm bringing this up here because I suspect that 
this new data point might cause browser vendors to reconsider whether 
they're willing to implement this change from the status quo.

     David
Received on Tuesday, 4 October 2011 17:26:57 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 22 June 2012 06:14:08 GMT