Hi Ojan,

Thanks for posting about this.

On Feb 10, 2010, at 4:56 PM, Ojan Vafai wrote:

We'd like to implement this event and want to make sure there's no opposition before moving forward. I don't expect this to require huge rewrites to current webkit code, but it will definitely require some plumbing to make it so that all user-gestures that modify the DOM go through this codepath.

The proposal is that the input event be fired for any user-gesture that results in a modification to the DOM. This matches the input event for text controls. We'd like to add an 'action' property (open to better names) that indicates what the user-gesture was (e.g. paste, deleteword, undo, inserttext, etc). The goal is to simplify monitoring of changes to rich-text regions and to enable use-cases where the data is stored in a different model than HTML. This is needed so that, for example, an undo operation can be applied correctly on the model as well as the DOM.

The beforeinput event would fire before the DOM is modified and is cancelable. I don't think this should be too much more work than adding the input event, an exception might need to be made for IME input here though. Specifically, it might be hard to make IME events cancelable.

More details:
https://bugs.webkit.org/show_bug.cgi?id=26526
Initial whatwg thread: 
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-June/020553.html
Hixie's response: 
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-July/021101.html

Sounds like there are basically three changes here:

1) Fire "input" event for contentEditable areas as well as for text- entry form controls. 2) For every case where we'd fire "input" per #1, add a new "beforeinput" event. 3) Add a new InputEvent (or something) interface with an "action" attribute to use for "input" and "beforeinput" events.

All of this seems reasonable on the face of it. Here is some specific feedback:

A) We should treat these as three separate changes. Let's do a separate bug, patch and set of tests for each.

B) Let's go back to the standards groups again (either whatwg or public-html is fine), this time with the additional information that we're planning to implement this soon. I'd like to see if other vendors are at least roughly on board with this direction.

C) "input" is defined as allowing batching of changes (so it can coalesce typing for instance). It seems like "beforeinput" couldn't do that, if it's supposed to fire before the DOM is changed. So there might not end up being a one-to-one correspondence between "beforeinput" and "input" events. It seems like it may be tricky to define exactly when it is supposed to fire and how often, especially in the presence of input methods. I'd also like to understand the relationship to the DOM Level 3 Events textInput event: <http://www.w3.org/TR/DOM-Level-3-Events/#event-type-textInput >. Clearly "beforeinput" is more broadly applicable, but when both would fire, which comes first? It might be good to roughly hash out the design of "beforeinput" in writing, if we eventually want to take it to standards, so there is some design information besides our implementation to go on.

Regards,
Maciej





_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to