在Windows Phone's IE Touchstart事件在几秒钟后自动结束
On Windows Phone's IE Touchstart Event Ends Automatically After Few Seconds
我有一个非常具体的问题。我正在为手机写一个网页,上面有一个按钮。我在包括IE在内的每个浏览器上检测touchevent
,但在IE上它是相当具体的。几秒钟后自动结束。你能帮帮我吗?这是我的代码(修改了一个,但仍然不能正常工作):
if (window.navigator.pointerEnabled) {
tapButton.addEventListener("pointerup", function(e) {
e.preventDefault();
addClass(this, 'clicked');
buttonTouched = true;
}, false);
tapButton.addEventListener("pointerdown", function(e) {
e.preventDefault();
removeClass(this, 'clicked');
buttonTouched = false;
}, false);
alert("pointerEnabled");
}
else if (window.navigator.msPointerEnabled) {
tapButton.addEventListener("MSPointerDown", function(e) {
e.preventDefault();
addClass(this, 'clicked');
buttonTouched = true;
}, false);
tapButton.addEventListener("MSPointerUp", function(e) {
e.preventDefault();
removeClass(this, 'clicked');
buttonTouched = false;
}, false);
alert("mspointerEnabled");
}
else {
alert("ordinary touch");
tapButton.addEventListener('touchstart', function(e) {
e.preventDefault();
addClass(this, 'clicked');
buttonTouched = true;
}, false);
tapButton.addEventListener('touchend', function(e) {
e.preventDefault();
removeClass(this, 'clicked');
buttonTouched = false;
}, false);
}
html标签里面有:
-ms-touch-action: none !important;
touch-action: none !important;
我怀疑你遇到了多点触控问题…
请记住,触摸事件与鼠标事件不同。你可以用不止一个手指触摸。如果你用一根手指触摸,而不是用另一根手指?你得到两个连续的touchstart
事件。touchend
可能也是如此。我怀疑用户light
是对的,它可能错误地触发了手指释放…
请看看你在监听器中获得的TouchEvent的touches
, changedTouches
和targetTouches
属性发生了什么。我强烈怀疑你会看到还有一根"手指"在触摸……所以它从2个触摸变成了1个。
确保(不再)触摸的手指实际上是按在按钮上的手指等等,比以前的mouseup
和mousedown
事件要简单得多。
touches
的属性,但我确实看到了pointerId
,它可以为您提供相同的信息(以您端的一些记账为代价)。
这个MSDN页面有一些很好的信息。我认为这段代码很有启发性:
function pointerdownHandler(evt) {
evt.target.setPointerCapture(evt.pointerId);
}
这似乎证实了,当一个手指碰到表面时,接触点得到一个ID,当您收到pointerup
事件时,它用于通知您哪个手指离开了表面。
我会添加一些日志,只是在pointerdown
和pointerup
上打印pointerId
,我敢打赌你会很快找到你的解决方案。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 淡入淡出每隔几秒就会发生变化的图像
- 在画布上显示字符串仅显示几分之一秒
- 处于非活动状态 5 秒后结束游戏
- jPlayer 过早结束曲目 2-8%(几秒钟)
- 此循环只匹配一次并结束.我该如何归还几根火柴
- Youtube API如何在视频结束时从0秒开始播放视频?Iframe,Javascript
- 每隔x秒重复几次触发器('click')功能
- HTML5 -视频播放时每隔几秒触发一次事件
- 使用JavaScript在视频结束前几秒运行一个函数
- 使用setTimeout在X秒后隐藏几个元素
- 反应-每隔几秒渲染相对时间
- 在第一个脚本完成后1秒结束脚本
- 显示前的几秒延迟:无
- 过期或超时在X秒后永不结束循环
- 简单的Javascript-HTML5音频,20秒前调用函数.结束
- 在 html5 音频元素结束播放前 5 秒执行 Javascript 代码
- 在Windows Phone's IE Touchstart事件在几秒钟后自动结束
- 使用socket.io每隔几秒以编程方式触发一个事件
- 在每隔几秒播放的动画中添加声音