gpt4 book ai didi

Javascript:除了使用 event.preventDefault() 之外,还有什么解决方法可以让 Chrome for Android 触发 touchmove 和 touchend 事件监听器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:14 24 4
gpt4 key购买 nike

当将事件监听器与 touchmove 和 touchend 事件一起使用时,除非我首先使用 event.preventDefault();,否则我无法让 Android 版 Chrome 确认这些事件;在代码的前面。如果我不想阻止默认滚动功能,是否可以使用任何其他解决方法让 Chrome for Android 确认这些事件?

示例代码:

$(document).ready(function () {
// Bind touch event listeners.
var elem = $('html').get(0);
elem.addEventListener('touchstart', function (e) { console.info('"touchstart" detected. Coordinates - ' + getCoord(e)); });
elem.addEventListener('touchmove', function (e) { console.info('"touchmove" detected. Coordinates - ' + getCoord(e)); });
elem.addEventListener('touchend', function (e) { console.info('"touchend" detected. Coordinates - ' + getCoord(e)); });

function getCoord(e) {
var touch = false;
if (e.touches.length > 0) {
touch = e.touches[0];
} else {
touch = e.changedTouches[0];
}
if (touch) {
return 'x: ' + touch.pageX + ', y: ' + touch.pageY;
}
}

示例 fiddle 在这里:http://jsfiddle.net/jQ2VS/1/

最佳答案

如果 Google Chrome 认为用户正在平移/滚动并且您没有调用 event.preventDefault( )

假设您想拦截水平触摸事件并让垂直触摸事件引起平移/滚动,解决方法是:

  1. touchstart 上,将坐标存储在变量中,并将 iteration 设置为 0。
  2. 对于每个 touchmove 事件,将 iteration 设置为 iteration+1。
  3. iteration 等于 4(只是我发现在我的设置中可靠的“魔数(Magic Number)”)时,计算 x 轴和 y 轴的总触摸偏移增量。编辑:在移动设备上你只会收到一个没有 event.preventDefault() 的 touchmove
  4. 如果 x 轴偏移 > y 轴偏移 * 3,则触发 event.preventDefault()。 (这确保手势几乎是水平的)

缺点是用户只能向左/向右滑动或向上/向下滚动。

关于Javascript:除了使用 event.preventDefault() 之外,还有什么解决方法可以让 Chrome for Android 触发 touchmove 和 touchend 事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com