- From: <bugzilla@jessica.w3.org>
- Date: Wed, 22 May 2013 21:41:02 +0000
- To: public-webapps-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=20189
--- Comment #8 from Daniel Buchner <danieljb2@gmail.com> ---
(In reply to comment #7)
> (In reply to comment #6)
> > I don't see how we get out of offering an event, consider the following:
> >
> > What happens when someone implements and registers their tag definition with
> > purely imperative code via a <script> included in original source or any
> > script piped in that is late-firing? If I register an element with
> > document.register within a script, am I to presume there is no event to let
> > me know when that code has upgraded all the nodes in the document that match
> > the definition? If so, this could be a significant landmine for developers.
>
> The document.register is synchronous. In other words, anytime you register
> an element imperatively, the nodes will be upgraded as soon as
> document.register returns.
I thought this was the case - it seems Google's Custom Elements polyfill (both
stable and master) never upgrades in-source elements when document.register()
is used anywhere other than an imported HTML file. I'll file a bug for Scott
and team on GitHub.
> > My suggestion would be to fire one 'CustomElementsUpgraded' event for each
> > *type* of element declared (which would contain an 'elementName' property)
> > when all elements of that type present in the DOM have been upgraded. This
> > would allow developers to know when elements are OK to touch regardless of
> > which declaration route they opt for, or how 'late' they register an element.
>
> Is the purpose of such event to let consumers of a specific custom element
> to observe when such custom element is registered?
>
> For example, Bob wants to use <foo-bar>, and he wants to listen to an event
> that tells him that <foo-bar> has loaded from some set of HTML imports. The
> only place where I see this useful is if Bob has a script that runs _before_
> imports (or calls to document.register):
>
> <script>
>
> document.addEventListener('register', functon(evt) {
> if (evt.localName == 'foo-bar') {
> // do stuff ...
> }
> });
>
> </script>
> <link rel="import" href="some-component-library.html">
> ...
>
> Did I get this right? :)
Yeah, this is a good summary of the use-case. It would be a factor if a
developer wanted to act on a type of element when it becomes ready and they
either don't control the definition/execution of it, or don't know when it will
be imported/registered.
Technically, the difficulty I was facing was due to the Google polyfill bug,
but I believe the scenario posed above remains a valid use-case - do you agree?
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Wednesday, 22 May 2013 21:41:08 UTC