- From: Charles Pritchard <chuck@jumis.com>
- Date: Thu, 20 Feb 2014 14:19:26 -0800
- To: "public-webapps@w3.org" <public-webapps@w3.org>
- Cc: "www-tag@w3.org" <www-tag@w3.org>, "public-webapps@w3.org" <public-webapps@w3.org>
> On Feb 20, 2014, at 2:09 PM, Edward O'Connor <eoconnor@apple.com> wrote:
>
> +public-webapps, -www-tag in replies to avoid cross-posting
>
> Hi,
>
> Domenic wrote, to www-tag:
>
>> [C]an shadow DOM be used to explain existing elements, like <video> or
>> <input type="range">, in terms of a lower-level primitive?
>>
>> As of now, it seems like it cannot, for two reasons:
>>
>> 1. Native elements have extra capabilities which are not granted by
>> shadow DOM, or by custom elements. For example, they can participate
>> in form submission.
>
> Authors need to be able to participate in form submission, but this is
> independent of Custom Elements.
>
> Web applications often maintain state in JS objects that have no direct
> DOM representation. Such applications may want such state to be
> submittable.
>
> Existing form elements map one field name to many values. People often
> build custom controls precisely because those controls hold more
> complex values that would be better represented as many names to many
> values. Subclassing existing form elements don't get you this.
>
> And inheriting from HTMLInputElement is insane (not because inheriting
> is insane, but because HTMLInputElement is insane), so that's not really
> how we want author-defined objects to become submittable.
>
> Given the above I don't think we should try to solve the "how authors
> can participate in form submission" problem by enabling the subclassing
> of existing form elements. Instead, we should define a protocol
> implementable by any JS object, which allows that JS object to expose
> names and values to the form validation and submission processes.
>
> Something like this:
>
> function Point(x, y) {
> this.x = x;
> this.y = y;
> }
> Point.prototype.formData = function() {
> return {
> "x": this.x,
> "y": this.y
> };
> }
>
> var theForm = document.querySelector("#my-form");
>
> var p = new Point(4,2);
>
> theForm.addParticipant(p);
> theForm.submit();
>
> This is obviously a super hand-wavy strawman and would need to be
> fleshed out. Thoughts?
>
>
> Ted
>
Sounds like a great idea; can that kind of thinking also be applied to HTMLMediaElement interfaces for custom video/audio handling with play/pause buttons?
There are some tricks with streams but it'd be really nice to be able to essentially use <video controls> with custom elements backed by media sources like SVG and Canvas.
Not to derail the conversation... I think you're absolutely on the right track.
-Charles
Received on Thursday, 20 February 2014 22:19:50 UTC