- From: <bugzilla@jessica.w3.org>
- Date: Sun, 11 May 2014 13:34:45 +0000
- To: public-webapps-bugzilla@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=25655 Masataka Yakura <myakura.web@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |myakura.web@gmail.com --- Comment #1 from Masataka Yakura <myakura.web@gmail.com> --- I think most of the use cases you describe are coverd by IndieUI Events. IndieUI: Events 1.0 https://dvcs.w3.org/hg/IndieUI/raw-file/default/src/indie-ui-events.html Requirements for IndieUI: Events 1.0 and IndieUI: User Context 1.0 https://dvcs.w3.org/hg/IndieUI/raw-file/default/src/indie-ui-requirements.html (In reply to caitp from comment #0) > A modest proposal: > > We have UIEvents, which should typically represent user interactions. These > interactions get described in more detail in subclasses, such as MouseEvent, > where some representation of the clicked button and coordinates are provided. > > What I propose is that events are optionally given a "role", designating > their UI interaction. > > For instance, if I swipe a touch screen, I might want to know that the > requested user interaction is "scroll" throughout the page. > > If I right-click on an element with a mouse configured for a typical > right-handed person, I might want to know that the interaction's role should > eventually open a context menu (and so, might have a role of "contextmenu") > > If I left-click on an element with a mouse configured for a typical > right-handed person, I might want to know that the interaction's role should > typically be "navigation" or "selection" depending on the type of element > being clicked. > > I don't think this would be terribly difficult for vendors to implement, > should be relatively easy to polyfill based on properties like current > MouseEvent.button, or similar. > > I also think this kind of information would be much easier to understand > when developing a web application, rather than sorting out what type of > interaction is expected based on numeric properties which behave differently > across user agents. > > So, I don't know for sure if this is a good design, but to me, it seems more > useful than being merely provided something like multitouch finger counting > or mouse buttons assigned to integers which are prone to change. > > It could eventually be taken a step further to allow some nice declarative > mechanism for changing the role a particular event should have, like I might > say <canvas mousewheel-role="zoom"> or something. > > A couple of default interaction roles I would see being useful include: > > - navigate > - submit > - select / deselect (in terms of checking or unchecking a checkbox or > select-multiple, or changing the selection of a select-one) > - zoom > - scroll > - collapse > - contextmenu > - next / previous (in terms of tab-ordering) > - drag / drop > > There are bound to be useful ones that I've missed, but I think it's worth > considering something like this for either DOM level 3 or DOM level 4, > because it should allow people to worry about higher-level interactions, and > worry less about low-level details when they don't need them. > > For a simple example, suppose I am using the history API in my client-side > application, and I have a catch-all click event handler which is used to > handle navigation with the history API: > > ``` > localFrame.addEventListener("click", function(event) { > // ignore non-navigation roles > if (event.role !== "navigate") return; > > // do the rest of the work > if (resolveTemplateAndLoad(event.target.href)) > history.pushState(event.target.href, someData); > }); > ``` > > To take this a step further, it would be cool to be able to just listen for > specific interaction roles, rather than listening for a specific event. This > is because an interaction might take many different forms. I could scroll a > page with a mousewheel or arrow keys, or by using the scrollbar. I could > navigate to a new page by pressing enter or space on the currently focused > item. So that form of API might look more like this: > > ``` > // Suppose a hash fragment following an event name were said to mean "listen > // only to events filtered by the specific role" --- It might step on DOM > // event names currently, but namespaced events are usually being handled > // differently, so it would probably be fine. Just an example, though! > localFrame.addEventListener("#navigate", function(event) { > var href = event.target.href; > if (resolveTemplateAndLoad(href)) > history.pushState(href, someData); > }); > ``` > > Listening for events of a specific role might be harder to polyfill, but it > would simplify a lot of client-side code, and I could see it being highly > useful for app developers. > > I'm interested in hearing what people think about this, it seems like > something which could be fleshed out and implemented fairly easily. Maybe it > doesn't belong in DOM level 3, but it would be really cool if we could agree > on a way to do this nicely, and because of this, it would be great to hear > if anyone is interested in something like that. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Sunday, 11 May 2014 13:34:46 UTC