- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Sun, 23 Dec 2012 16:07:32 -0800
- To: Anne van Kesteren <annevk@annevk.nl>
- CC: www-dom@w3.org, Cameron McCormack <cam@mcc.id.au>, Bobby Holley <bholley@mozilla.com>
On 12/23/12 1:09 AM, Anne van Kesteren wrote:
> What happens with document.open()? Does that replace the proto as well?
In Gecko?
I think it might do something weird like replacing the proto chain for
descendants of the document but not all of the nodes that have it as
ownerDocument or something. Bobby might know.
What it should do per spec... I have no idea. :(
Note also that Gecko will update the proto on some other things that
hang off Elements as well (whichever ones we've thought about), but not
all of them. It's a bit ad-hoc at the moment.
> How do I go about defining replacing the proto of an element?
That's a good question. It at least partially depends on how this needs
to interact with web components.
> Are there any other places where this happens in the platform?
Not that I know of, apart from adoptNode and document.open().
Note that there's the question of what the right proto is to use for the
element to start with. I _think_ that's meant to be defined in WebIDL
section 4.6, which says:
Every platform object is associated with a global environment, just
as the initial objects are. It is the responsibility of
specifications using Web IDL to state which global environment (or,
by proxy, which global object) each platform object is associated
with.
and then:
The value of the internal [[Prototype]] property of the platform
object is the interface prototype object of the primary interface
from the platform object’s associated global environment.
I will bet $50 that there are no specs that actually define which global
environment their objects are associated with. ;) The DOM spec
certainly doesn't seem to, and I think it had the best chance of them all.
> Is the right place in DOM or should IDL provide a hook for it?
I think WebIDL should provide a hook for changes to the global
environment an object is associated with. And then we should coordinate
between WebIDL and Web components for how they should interact. And
specs will need to define the global environment bit, including when (or
if) it changes.
-Boris
Received on Monday, 24 December 2012 00:08:06 UTC