- From: <bugzilla@jessica.w3.org>
- Date: Thu, 30 Sep 2010 22:41:07 +0000
- To: public-html-bugzilla@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=10916 Summary: Add a new <control> element to convey the common semantics of a script enabled UI control Product: HTML WG Version: unspecified Platform: All OS/Version: All Status: NEW Severity: normal Priority: P3 Component: HTML5 spec (editor: Ian Hickson) AssignedTo: ian@hixie.ch ReportedBy: adrianba@microsoft.com QAContact: public-html-bugzilla@w3.org CC: mike@w3.org, public-html-wg-issue-tracking@w3.org, public-html@w3.org SUMMARY HTML5 introduces new elements for common semantics such as header, footer and nav that allow content to be tooled more effectively. As we investigate how to provide tools to help developers build the next generation of application, one of the common scenarios we run into is the use of script frameworks to build more sophisticated controls than the intrinsic form elements that are part of the base language. Many of the common script frameworks allow script based functionality to be attached to arbitrary elements and <div> is commonly used. There is no standardised way for editing UAs to identify these controls. The proposal here is to introduce a new element, say <control>, that conveys the semantics of a script defined control on a page. Development tools can provide see this mark-up and provide a context specific editing experience. The new element needs have no new behaviour in browsers, which should treat it as a HTMLElement. It could potentially allow arbitrary attributes that don’t belong in the global attributes set, that are effectively ignored by the browser but can be processed by scripts as part of the application markup. RATIONALE data-* attributes provide in-band data to scripts and this allows framework authors to leverage this while building HTML application frameworks. A example of such a declaration is: <div data-control="framework.slider" data-maxvalue="100" data-minvalue="0" data-smallchange="1" data-largechange="10" data-onchange="sliderValueChanged"> </div> There are a few issues with this approach: * The intent to create a control is diluted by use of a generic div element. This makes it hard for tools to detect that this is a control without having implicit knowledge of the specific script-based control framework. * The markup is verbose and without the help of tooling, is a lot to write and difficult to read. * The attribute names are prone to collision with other utility providers. This can be solved by adding a disambiguating prefix (e.g., jquery-, dojo-), but that only makes the markup even more verbose. * Different controls may apply to different elements and the authors would have to know what elements are applicable to the control they want to use (e.g., in the JQueryUI framework, the Button control applies to either the button or input element as opposed to the Slider control that applies to the div element). By making the control element that can include any arbitrary attribute as part of the standard, we can get a similar mechanism of providing data to scripts and that can be ignored by the browsers. The example markup, using this proposal would look like: <control type="framework.slider" maxvalue="100" minvalue="0" smallchange="1" largechange="10" onchange="sliderValueChanged"> </control> In this example, we use the type attribute to identify the UI control and the set of attributes that are applicable to the element in this particular framework. * The intent to add a slider control is captured precisely. * The markup is concise and easy to author. * The element is intended for use by frameworks to declare controls and as such collision with other utility providers will be rare. * This pattern encourages all framework control declarations to use the control element consistently and hence there would be no question as to which element is applicable for a given control. In addition, tooling for parsing and generating declarative controls becomes simpler because control declarations wouldn’t collide with preexisting elements and their usage patterns. An alternative approach, which conforms to existing attribute standards is to use the data-* attributes on the control element. But note that this has some of the verbosity and duplication drawbacks of the original approach. <control data-type="framework.slider" data-maxvalue="100" data-minvalue="0" data-smallchange="1" data-largechange="10" data-onchange="sliderValueChanged"> </control> Browser support: The major released/pre-release browsers already treat unknown HTML elements in a very consistent fashion and a framework could already leverage this behavior to build the proposed solution. However, such HTML documents don’t pass validation and aren’t guaranteed to work in the future. In effect, acceptance of the proposal makes the usage of the control element future proof. DETAILS 1. Under section 2.2.2 Extensibility, add a new item as. * Authors can use the control element to declare framework controls that can then be processed by client-side scripts or server-side site-wide scripts. Any data for these controls can be supplied via attributes that don’t collide with the global attribute set. These attributes are guaranteed to be ignored by the browsers. 2. Under section 4 The elements of HTML, add a new subsection to include the control element of type HTMLElement. Description The control element represents a UI control that is usually processed by a script belonging to a framework. This element is treated as a regular HTMLElement by browsers, but any attribute other than the ones in the global attribute set are considered “valid” and ignored by the browser. IMPACT 1. Positive Effects * Provides a consistent pattern for declaring framework controls in an HTML application. * Captures the author’s intent to declare a control much more clearly than the data-* attribute method. * The resulting markup is concise and easier to author and read, compared to the data-* attribute method. * Tooling for parsing and generating declarative markup with interactive controls is simpler to implement. 2. Negative Effects * Introduces one more tag/element for browsers and validator to recognize 3. Conformance Classes Changes * Allow usage of control element to be conforming * Allow usage of arbitrary attributes outside of the global attributes set, on the control element to be conforming. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Thursday, 30 September 2010 22:41:09 UTC