- From: Rick Byers via GitHub <sysbot+gh@w3.org>
- Date: Fri, 08 Sep 2017 13:59:34 +0000
- To: public-pointer-events@w3.org
RByers has just created a new issue for https://github.com/w3c/pointerevents:
== Imperative API to prevent panning and zooming ==
The only way to suppress panning and zooming with Pointer Events (or passive Touch Events) is via the declarative `touch-action` API.  This works great in most cases, but occasionally there are special cases (like #178) which can't be solved with touch-action.  We certainly don't want to re-introduce all the performance problems of `TouchEvent.preventDefault`, but chatting with @mdittmer this morning we realized that there are scenarios (#178 in particular) where you can get the best of both worlds by having an asychronous API.  Eg:
```webidl
interface PointerEvent {
  Promise<bool> tryDisableTouchActions();
}
```
`tryDisableTouchActions` would resolve to `true` if panning and zooming have been suppressed for the duration of the associated pointer, and `false` otherwise (pointer not active or panning/zooming already started).  Alternately we could consider failure [an error](https://www.w3.org/2001/tag/doc/promises-guide#rejections-should-be-exceptional) and reject instead of resolve to `false`.
This wouldn't be a replacement for `touch-action`.  For example, there would be no non-racy way to use it for a carousel scenarios - those still must use `touch-action: pan-y`.  But for anything involving a timer, this solution should be no more racy than the alternative.
Please view or discuss this issue at https://github.com/w3c/pointerevents/issues/216 using your GitHub account
Received on Friday, 8 September 2017 13:59:29 UTC