javascript - Touchend 不起作用,即使在调用 e.preventDefault() 之后也是如此

标签 javascript

好吧,我陷入了一个大困境。

我偶然发现了 touchend 错误。 touchmove 之后,无论我做什么,touchend 事件都不起作用。

我尝试在 touchmove 中添加 preventDefault()。我还尝试用 touchcancel 替换 touchend 。一切都失败了。我读到这与支持触摸的设备中的滚动有关,但到目前为止我还没有找到任何有效的解决方案。

我知道这个问题可以用 JQuery 解决,但我更喜欢用 Vanilla JS 的方式来解决这个问题,这样我就可以了解幕后发生的事情。

var touchActive = false;

elem.addEventListener("touchstart", function (event) {
    touchActive = true;
});
elem.addEventListener("touchend", function (event) {
    touchActive = false;
});
elem.addEventListener("touchmove", function (event) {
    if(touchActive){
    }
    else{
    }
});

那么为什么 touchend 不起作用呢?

最佳答案

如果您使用的是 Android < 6.0,那么您将被迫同时使用 touchstart 和 touchmove 事件,否则除非您考虑集成 PreventDefault,否则不可能结束事件。后者可能会影响您的滚动,所以这是我的解决方案:

https://jsfiddle.net/z9p7uxp2/

var x = document.getElementsByTagName('div')[0];

document.getElementsByTagName('div')[0].addEventListener("touchend", function (event) {
    x.style.background = "black"
});
document.getElementsByTagName('div')[0].addEventListener("touchcancel", function (event) {
    x.style.background = "black"
});
document.getElementsByTagName('div')[0].addEventListener("touchmove", function (event) {
    x.style.background = "red"
});

关于javascript - Touchend 不起作用,即使在调用 e.preventDefault() 之后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34474699/

相关文章:

javascript - 获取迭代列表的所有值

javascript - 突出显示表格单元格的 Angular - html/css

javascript - 在 box-shadow 属性上禁用 CSS 过渡

javascript - jQuery FileUpload 发送的文件数据在哪里?

javascript - 尽管有 z-index,但动画 DIV 隐藏的跨度文本

javascript - 如何使标题元素的宽度向左缓慢移动

javascript - 我可以在 URL 请求中使用很棒的字体吗?

javascript - 同步服务器和客户端时间?

javascript - jquery: .filter().css ("visibility", "collapse") 在 IE 中不工作,在 FF 中工作正常

javascript - 应用程序编译时 `Property ' 活着 ' does not exist`