移动 safari 上的 touchMove 事件 - 导致整个页面被拖动

Posted

技术标签:

【中文标题】移动 safari 上的 touchMove 事件 - 导致整个页面被拖动【英文标题】:touchMove event on mobile safari - causes the whole page to be dragged 【发布时间】:2012-08-09 16:45:15 【问题描述】:

根据苹果文档应用触摸事件时

element.addEventListener("touchstart", touchStart, false);
element.addEventListener("touchmove", touchMove, false);
element.addEventListener("touchend", touchEnd, false);
element.addEventListener("touchcancel", touchCancel, false);

拖动时,整个 html 页面(在 ipad 或 iphone 上)往往会被拖动。我该如何预防?

我尝试添加

event.preventDefault();

到回调,以及

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />

没有成功。

【问题讨论】:

【参考方案1】:

您可以尝试使用从处理程序返回 false 来防止默认操作。

event.preventDefault();
return false;

你也可以尝试使用event.stopPropagation();

我认为其中一个应该可以工作

【讨论】:

以上是关于移动 safari 上的 touchMove 事件 - 导致整个页面被拖动的主要内容,如果未能解决你的问题,请参考以下文章

触摸事件仅在iPad iOS 11.4上的Mobile Safari中滚动时触发“一次”

JavaScript小游戏--2048(移动端)

移动端 touchmove高频事件与requestAnimationFrame的结合优化

停止弹出对话框的 touchmove 事件

javascript去掉原来的touchmove事件

移动端事件(touchstart+touchmove+touchend)