On Apr 5, 2006, at 4:47 PM, Ian Hickson wrote:


On Wed, 5 Apr 2006, Jonas Sicking wrote:

We definitely want to allow all Documents to implement DocumentWindow. I 
don't want to have two versions of every document class and have to 
worry about constructing the right one.

Um, well, every browser I've tested already does it, and given the kind of 
stuff that DocumentWindow has (.location, .cookie, .execCommand, etc), all 
of which has to be neutered for these non-Windowed Documents, it seems 
easiest to just remove the relevant members.

"Just remove" implies a lot more implementation effort than "return null for inapplicable attributes". BTW what was your test? I tried this:

_javascript_:alert("defaultView" in document.implementation.createDocument(null, null, null));
_javascript_:alert(document.implementation.createDocument(null, null, null).defaultView);
_javascript_:alert("location" in document.implementation.createDocument(null, null, null))
_javascript_:alert(document.implementation.createDocument(null, null, null).location);

The "in" expressions give "true" and the attempts to get the attribute give "null" in Firefox and Opera. This implies JS properties that are present but currently "null". An absent JS property would give "false" and "undefined" respectively.

Safari actually screws both of these up, in the first case defaultView is present, but that will shortly be fixed, and location is absent because we only have it on HTMLDocument instead of Document, unlike Firefox and Opera.

So I think the current rough consensus behavior is effectively that DocumentWindow is implemented but attributes that don't make sense for the non-presented case return null.

Regards,
Maciej

Reply via email to