在平板电脑表面处理触摸/指针事件的最佳方法是什么?我觉得它的行为很令人困惑。我编写了一个脚本,它只设置所有事件处理程序,以了解事件是如何触发的(设置本机事件处理程序,对UI使用jQuery ):
$.each([
"touchstart","touchmove","touchend",
"mousedown","mousemove","mouseup",
"pointerdown","pointermove","pointerup",
"MSPointerDown","MSPointerMove","MSPointerUp"
], function(i,eventname) {
tester.addEventListener(this, function(e) {
msg(eventname,e);
if ($("#prevent").is(":checked")) {
e.preventDefault();
}
if ($("#stop").is(":checked")) {
e.stopPropagation();
}
if ($("#stopimmediate").is(":checked")) {
e.stopImmediatePropagation();
}
}, false);
});使用鼠标间隔或桌面IE11,一切都很好。所有三个事件(鼠标、指针、MSPointer)都按预期顺序触发:向下、移动、向上。
但是,当我使用屏幕时
我做错了什么?调用preventDefault、stopPropagation或stopImmediatePropagation不会更改此行为。设置css指针-事件:无;禁用所有事件。
完整的代码脚本
发布于 2014-10-08 22:17:41
当用户用手指或触控笔拖曳屏幕时,您需要使用触动 CSS属性来防止浏览器的pan和缩放行为。
例如:
#prevent, #stop, #stopimmediate {
touch-action: none;
}发布于 2014-10-07 20:45:11
尝试一下我的触摸手势抽象库,DeepTissue。IE的触摸模型非常简单,因为指针事件将所有输入模式抽象为一个公共API。Chrome正在使事情变得复杂,但这是另一个故事:)。
你真的不想与所有的事件挂钩。我明白这会让人困惑。所以我才写了“深奥”。它使您不必编写所有管道代码,并选择最佳选项和挂钩到该事件集。
https://stackoverflow.com/questions/26218146
复制相似问题