- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 14 Jul 2009 04:59:59 +0000 (UTC)
- To: Simon Pieters <simonp@opera.com>, Maciej Stachowiak <mjs@apple.com>, Thomas Broyer <t.broyer@ltgt.net>
- Cc: "public-html@w3.org" <public-html@w3.org>
- Message-ID: <Pine.LNX.4.62.0907140408110.23663@hixie.dreamhostps.com>
On Fri, 19 Jun 2009, Simon Pieters wrote: > > There is interop between Opera, WebKit and Firefox that typeof > document.all returns 'undefined'. I think this is needed for Web compat. On Fri, 19 Jun 2009, Maciej Stachowiak wrote: > > Here are the special behaviors WebKit ensures for document.all: > > - document.all is false when tested in a boolean comparison, so if > (document.all) checks fail > - the expression !document.all evaluates to true > - the following expression evaluates to true: document.all == undefined > - the following expression evaluates to true: document.all == null > - the following expression evaluates to false: document.all != undefined > - the following expression evaluates to false: document.all != null > - the expression "typeof document.all" returns the string "undefined" I've required the above. On Fri, 19 Jun 2009, Thomas Broyer wrote: > > Doing some additional tests: > - Opera (9.64), FF (3.0.11) and Safari (4) all report document.all as > [object HTMLCollection] in their JS console; Chrome (3) on the other > hand reports it as undefined; however, all four browsers agree that > document.all.toString() is "[object HTMLCollection]", it might just be > how the JS console is implemented? I've gone with the non-Chrome behaviour here. > - All four browsers return true for ("all" in document), I would have > expect a false here (this is explicitly allowed by ECMAScript, ยง8.6.2: > "Host objects may implement these methods in any manner unless specified > otherwise; for example, one possibility is that [[Get]] and [[Put]] for > a particular host object indeed fetch and store property values but > [[HasProperty]] always generates false.") I've remained compatible with the deployed UAs on this. > - Opera and FF return false for document.hasOwnProperty("all"); this > is inconsistent with the above, given that document.prototype is null > (the property exists according to [[HasProperty]], it cannot be in the > prototype chain as there is not prototype, but it doesn't exist on the > object, so where is it?!) Chrome and Safari return true. I've gone with the Chrome/Safari behaviour here. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 14 July 2009 05:00:36 UTC