我编写了一个使用JQuery移动swipeleft和swiperight事件的移动Web应用程序,但这些不适用于运行Android 4.2.2的三星Galaxy S4。在标准网络浏览器或Chrome中运行网络应用程序存在同样的问题:未检测到滑动事件。
以下是我试图检测在我测试过的其他设备上工作正常的事件,甚至是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中,有什么我可以做的,以代码方式捕获这些事件吗?
答案 0 :(得分: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;
第二个是todo与kitkat发射touchcancel而不是touchend。解决方案是将touchcancel委托给touchend。