FastClick 在 iOS 15 上失效了吗?

ლ小秋 阅读 55

我之前在移动端项目里用了 FastClick 来消除 300ms 延迟,但最近测试发现 iOS 15 上点击还是有明显延迟,FastClick 好像没起作用。

我引入的方式是 import FastClick from 'fastclick'; FastClick.attach(document.body);,以前在 iOS 13 上没问题,现在是不是系统自己处理了,反而和 FastClick 冲突?

我来解答 赞 29 收藏
二维码
手机扫码查看
2 条解答
上官桂霞
iOS 13 之后系统自己已经解决了 300ms 延迟问题,FastClick 在新版 iOS 上反而可能帮倒忙。

你的判断是对的,iOS 15 上延迟很可能就是 FastClick 和系统内置优化冲突导致的。

解决办法很简单:检测 iOS 版本,高版本直接跳过 FastClick。

import FastClick from 'fastclick';

const isIOS = navigator.userAgent.match(/iPhone|iPad|iPod/i);
const iOSVersion = isIOS ? parseInt(navigator.userAgent.match(/OS (d+)_/)[1]) : 0;

if (isIOS && iOSVersion < 13) {
FastClick.attach(document.body);
}


或者更干脆点,现在直接不加载 FastClick 也没问题,现代移动浏览器基本都原生支持了。唯一要注意的是如果项目要兼容老设备(iOS 12 以下),那就保留 FastClick 但做好版本判断。

另外提醒一下,FastClick 官方早就停止维护了,能不用就不用吧。
点赞
2026-03-11 23:01
欣奥🍀
iOS 15 确实不需要 FastClick 了,甚至用了反而会出问题。这库是当年的技术债,现在现代浏览器早就原生解决了 300ms 延迟。

你的情况是 FastClick 和 iOS 15 新的触摸事件机制冲突了。系统已经把延迟优化没了,FastClick 还要在那强行干预,导致点击行为异常。

最优雅的方案是直接移除这个库,把相关的 import 和 attach 代码全删了。如果删了之后还有延迟,通常是 meta 标签没配置好。确保 head 里加上这句标准配置:



这样更清晰,少个依赖,少点麻烦,代码也更干净。别为了一个已经不存在的问题引入新的 bug。
点赞 2
2026-03-04 10:46