在IE10中新加入的对高级用户输入的识别支持,举例说明:注册一个点击操作,通过一句addEventListener 就能够知道当前用户的点击是哪种设备,是手指的点击,是鼠标的单击还是触控笔的点击(平板设备都会带有触控笔)。
以上这段代码就是能够识别出当前用户的点击是哪种设备,通过回调的方法中 e.pointerType 还进行判断。鼠标是4,触控笔是3,手指是2。至于值为1是何种设备还有待研究。
还有需要注意的就是 想在javascript中添加对输入设备的识别,注册的方法事件也是有点点区别。
addEventListener 添加的事件为 MSPointerDown
而在IE10中对于这样的多种设备识别中优先处理的手指的点击,前提是不影响功能正常单击的情况下。然而IE10不仅仅能识别用户的输入设备还支持非常多的高级手势
以下为IE10高级手势支持的演示
创建手势对象
在您的网站中处理手势的第一步是实例化手势对象。
<span style="COLOR: blue">var</span> myGesture = <span style="COLOR: blue">new</span> MSGesture();
接下来,为该手势提供一个目标元素。浏览器将对该元素触发手势事件。同时,该元素还可以确定事件的坐标空间。
elm = document.getElementById(<span style="COLOR: maroon">"someElement"</span>);
myGesture.target = elm;
elm.addEventListener(<span style="COLOR: maroon">"MSGestureChange"</span>, handleGesture);
最后,告知手势对象在手势识别期间处理哪些指针。
elm.addEventListener(<span style="COLOR: maroon">"MSPointerDown"</span>, <span style="COLOR: blue">function</span> (evt) {
<span style="COLOR: rgb(0,100,0)">// adds the current mouse, pen, or touch contact for gesture recognition</span>
myGesture.addPointer(evt.pointerId);
});
注意:请不要忘记您需要使用 –ms-touch-action
来配置元素以防止其执行默认触摸操作(例如,平移和缩放),并为输入提供指针事件。
一旦手势对象具有有效目标并至少添加了一个指针,则其将开始触发手势事件。手势事件可分为两种:静态手势(例如,点击或保持)和动态手势(例如,收缩、旋转和轻扫)。
点击最基本的手势识别是点击。当检测到点击时,将会在手势对象的目标元素触发 MSGestureTap
事件。不同于单击事件,点击手势只能在用户触摸、按鼠标按钮或使用手写笔触控而不移动时触发。如果您要区分用户点击元素和拖动元素的操作,这一点通常会显得十分有用。
长按手势是指用户使用一个手指触摸屏幕,并保持片刻并抬起而不移动的操作。在长按交互期间,MSGestureHold
事件会针对手势的各种状态而多次触发:
动态手势(例如,收缩或旋转)将以转换的形式报告,这与 CSS 2D 转换颇为类似。动态手势可触发三种事件:MSGestureStart
、MSGestureChange
(随着手势的持续而重复触发)和 MSGestureEnd
。每个事件都包含缩放(收缩)、旋转、转换和速度等相关信息。
由于动态手势以转换的形式报告,因此使用包含 CSS 2D 转换的 MSGesture
来操作诸如照片或拼图等元素将变得十分轻松。例如,您可以通过下列方式启用缩放、旋转和拖动元素的操作: