如何彻底去除手机浏览器长按震动?

Posted

技术标签:

【中文标题】如何彻底去除手机浏览器长按震动?【英文标题】:How to completely remove mobile browser long-press vibration? 【发布时间】:2017-09-07 04:22:47 【问题描述】:

我正在尝试完全消除在移动浏览器中长按某个元素时发生的振动。

具体来说,我有一个图像,我正在向其中添加我自己的长按功能,但默认情况下发生的细微短振动会产生干扰,我需要禁用它。

我已经成功地阻止了通常的上下文菜单的出现,方法如下:

window.oncontextmenu = function (event) 
  event.preventDefault();
  event.stopPropagation();
  return false;
;

我还添加了 CSS 来停止突出显示和文本选择等 - 但我无法弄清楚是什么导致了几百毫秒后的默认振动。

是否有另一个生命周期事件在移动浏览器中长按时弹出,在 oncontextmenu 内部或周围?

这里是完整的 plunker 示例,长按移动浏览器中的图像(我在 android 上使用 chrome)以了解我的意思:https://plnkr.co/edit/y1KVPltTzEhQeMWGMa1F?p=preview

【问题讨论】:

在 Firefox 中更糟糕。 Firefox for Android 不再振动,而是取消了触摸点(触发 touchcancel)! 【参考方案1】:

点击时禁用文本选择。

document.querySelector("#your_target").addEventListener("touchstart", (e) =>

    e.preventDefault();
    e.stopPropagation();
    this.style.userSelect = "none";
);

document.querySelector("#your_target").addEventListener("touchend", (e) =>

    e.preventDefault();
    e.stopPropagation();
    this.style.userSelect = "default";
);

【讨论】:

太棒了,效果很好,谢谢!!【参考方案2】:

您可以在 CSS 中使用 touch-action: none;。然后你也许可以处理一个交互事件来做你想做的事。

https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action

【讨论】:

以上是关于如何彻底去除手机浏览器长按震动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在移动浏览器上禁止长按会出现的文本操作菜单

打开UC浏览器手机左上角就会出现类似放大镜的图标,如何去除呢

OPPO手机没有消息通知

手机端app h5页面怎么禁用长按选中

手机网页取消长按事件

手机网页中,长按会触发系统事件,请问怎么取消这些事件