vue移动端项目-click事件在浏览器中延迟300ms的解决方法

16 篇文章 4 订阅

在H5页面移动端项目当中,click事件在浏览器中会有300ms的延迟,这个也是移动端开发中常见的问题之一,今天就这个问题说一说解决方法

解决click点击事件300ms延迟—fastClick

fastClick的思路就是利用touch来模拟tap(触碰),如果认为是一次有效的tap,则在touchend时立即模拟一个click事件,分发到事件源(相当于主动触发一次click),同时阻止掉浏览器300ms后产生的click,自然也不存在点击穿透的问题。

在vue项目中,可以通过引入fastclick第三方依赖包来解决。
1、安装fastclick依赖

npm install fastclick ---save

2、在main.js中引入并使用

import fastClick from 'fastclick'
 
fastClick.attach(document.body)

遇到的issue

1、在ios系统中,点击input框或者textarea框无法唤起输入法

在使用过程中,你可能会发现,在ios系统中,点击input框或者textarea框无法唤起输入法,往往点击多次才能唤起输入法,极大的影响了用户体验,这是ios升级11.3以后fastclick的问题,对此,可采用以下方法解决:
在fastclick.js中找到FastClick.prototype.focus = function(targetElement) {...},大概在325行左中,添加如下代码即可
在这里插入图片描述

// ios系统下,触摸input框以及textarea框无法唤起输入法
targetElement.focus();

此时fastclick版本是1.0.6

2、有些元素不需要立刻触发点击

例如:在写移动端项目的时候,我引用了vant组件中的swipe轮播图,在项目中全局引入了fastclick后,我发现,swipe滑动失效了。或者你还会碰到一些其他情况,但又不想舍弃掉组件,这时可以参考一下解决方法:
needsclick
对于页面上不需要使用fastclick来立刻触发点击事件的元素,在元素标签的class上添加needsclick

<!--举例 -->

<buttton class="needsclick" @click="aaa"></button>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值