As you may know, we now have a standard for the console object: 
http://console.spec.whatwg.org/

One of the first issues we encountered while investigating console behavior is 
https://github.com/whatwg/console/issues/1, which is that browsers currently 
allow setting `window.console` (and presumably `self.console` in workers) to 
any value. This is pretty weird, but every tested browser (Firefox, Chrome, 
Edge, and Safari) follows it.

Probably the default course of action here is to just spec this. But we wanted 
to check to see if any implementers thought this was weird, and wanted to 
experiment with e.g. removing the setter.

Even if we do go this route, we have another weirdness:

- Firefox has an accessor descriptor (get/set), Chrome, Safari, and Edge have a 
data descriptor (value)
- Firefox, Chrome, and Edge are enumerable; Safari is not enumerable

I guess Chrome and Safari's data descriptors are not surprising, given that 
their bindings infrastructure for Window isn't fully Web IDL-compatible yet. 
But Edge is pretty surprising. Travis, do you have any info on that?

So I think the plan of record is: `attribute any console`, with prose 
describing how the getter returns "the window's console object" which is 
initially set to a new instance of Console, but the setter can change it to any 
value. This means accessor descriptors and enumerable, since that's how IDL 
works. If anyone thinks this is bad, let us know. Otherwise the standard will 
be updated any day now in that direction. 

Reply via email to