Jquery Mobile在Android 4.2.2上的滑动事件无法正常工作

4
我已经编写了一款移动Web应用程序,使用JQuery移动端的swipeleft和swiperight事件,但是在Samsung Galaxy S4上运行Android 4.2.2时无法正常使用。无论在标准的网页浏览器还是Chrome中运行Web应用程序,都存在同样的问题:无法检测到滑动事件。
以下是我尝试检测事件的方式,在其他设备上测试都正常,包括Android设备(但不包括Android 4.2.2):
$('#showImage').on("swipeleft", function (event) {
if (currentScale != initialScale) return;
if (currentPage < maxPage) {
  ++currentPage;
  img.src = document.getElementById("page" + zeroPad(currentPage, 2) + "url").value;
}
});

$('#showImage').on("swiperight", function (event) {
if (currentScale != initialScale) return;
if (currentPage > 1) {
  --currentPage;
  img.src = document.getElementById("page" + zeroPad(currentPage, 2) + "url").value;
}
});

在Android 4.2.2中,我是否可以通过编码的方式捕获这些事件?


你能找到解决方案吗?我也遇到了同样的问题。 - 123Ex
没有。除了这个问题,尝试捕获Android 4.2.2中的轻触事件也失败了。在Android 4.0.4中,滑动和轻触都正常工作。 - Obi Wan
我曾经遇到过同样的问题,在4.2.2版本中按钮点击事件无法正常工作,我使用了<a>标签来代替按钮,然后将标签改为<button>。之后在所有版本上事件都能够完美地工作。请检查你的HTML标签,也许你能找到解决方案。祝你好运! - 123Ex
在我的情况下,我正在尝试将jQuery移动事件应用于HTML5画布元素。您知道您的按钮解决方案是否适用于该情况吗?我真的认为这是Android 4.2.2操作系统的失败,但我愿意查看任何可以解决它的解决方法。 - Obi Wan
1个回答

1
你有两个问题。
第一个问题是由JQM中的一个错误引起的,该错误已经得到解决,但尚未实施https://github.com/jquery/jquery-mobile/issues/5534
基本上,滑动事件测量的最小距离必须考虑设备的像素密度。因此,在JQM的情况下,对touch.js进行以下更改将解决此问题:
horizontalDistanceThreshold = window.devicePixelRatio >= 2 ? 15 : 30;
verticalDistanceThreshold = window.devicePixelRatio >= 2 ? 15 : 30;

第二个问题与KitKat触发touchcancel而非touchend有关。解决方法是将touchcancel委托给touchend。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接