- From: Brian Kardell <bkardell@gmail.com>
- Date: Mon, 11 Apr 2016 10:37:35 -0400
- To: "/#!/JoePea" <trusktr@gmail.com>
- Cc: Dimitri Glazkov <dglazkov@chromium.org>, "public-webapps@w3.org" <public-webapps@w3.org>
- Message-ID: <CADC=+jckBKoOhUT8DLHke2MPgkeu0KWnj8NE5-1v8+6gJDf+GA@mail.gmail.com>
On Sun, Apr 10, 2016 at 11:11 PM, /#!/JoePea <trusktr@gmail.com> wrote:
> The is="" attribute lets one specify that some element is actually an
> extended version of that element.
>
> But, in order for this to work, the Custom Element definition has to
> deliberately extend that same basic element type or else it won't
> work.
>
> It'd be nice if a Custom Element definition could be arbitrarily
> applied to any type of element, with the is="" tag for example, and
> that the element would then be upgraded to the extending type at
> runtime. The custom element could be told what class it is extending
> at runtime in order to perhaps act differently using conditional
> statements.
>
> So, writing defining the element could be like this:
>
> ```js
> let isDynamic = true
> document.registerElement('some-element', {
> createdCallback: function() {
> if (this.typeExtended == 'DIV")
> // ...
> if (this.typeExtended == 'BUTTON')
> // ...
> },
> }, isDynamic)
> ```
>
> then using the element could be like this:
>
> ```html
> <div is="some-element"></div>
> <button is="some-element"></button>
> <p is="some-element"></p>
> ```
>
> What are your thoughts on such a way to extend any type of element at
> runtime? Could it be a way for augmenting, for example, an existing
> app without necessarily having to modify it's markup, just simply
> adding is="" attributes as needed? Would this make things too
> complicated?
>
> The real reason I thought of this idea is because:
> https://github.com/infamous/infamous/issues/5
>
> There might be a better way, but thought I'd mention it just in case
> it sparks any ideas.
>
> Cheers!
> - Joe
>
> /#!/JoePea
>
>
Is there a reason that you cannot wrap with fallback? For example, in your
github issue you are given and existing app with markup like:
<div>
<div id="foo">
<h1>Hello</h1>
</div></div>
and the issue wanted to change it to
<div is="motor-scene" ...>
<div id="foo" is="motor-node" ...>
<h1>Hello</h1>
</div></div>
Is there a reason it could it not just be
<motor-scene ...>
<motor-node>
<!-- original/fallback content --> <div id="foo" ...>
<h1>Hello</h1>
</div> </motor-node>
</motor-scene>
There isn't really a significant difference between div and motor-scene to
non-supporting browsers.
--
Brian Kardell :: @briankardell
Received on Monday, 11 April 2016 14:38:04 UTC