移动端点击按钮为什么会有延迟反馈?

FSD-丽君 阅读 72

我在手机上做了一个按钮,点击后要切换状态,但总感觉点完要等一会儿才有反应,体验很差。我试过加 touch-action: manipulation,也用了 ontouchstart 代替 onclick,但还是有明显延迟。

这是我的关键代码:

<button ontouchstart="handleClick()" style="touch-action: manipulation;">点我</button>

是不是哪里没处理对?安卓和 iOS 都有这个问题。

我来解答 赞 17 收藏
二维码
手机扫码查看
1 条解答
Dev · 翼杨
你的问题在于 viewport meta 标签没设置好,这是延迟的根本原因。

移动端浏览器默认会等待 300ms 来判断你是单击还是双击,所以你会感觉有延迟。touch-action: manipulation 只是告诉浏览器"别等双击了",但前提是你的 viewport 设置正确。

正确做法:

第一步,确保你的 head 里有这个 meta 标签:



第二步,事件绑定改成用 addEventListener,别用内联属性 ontouchstart,兼容性不好:





这样设置完,点击延迟基本就消失了。

如果还想更极致,用 pointer 事件可以同时兼容鼠标和触摸:

button.addEventListener('pointerdown', handleClick);

不过 click 配合正确的 viewport 就够用了,我现在项目里一直这么写,没问题。
点赞
2026-03-16 22:02