解决vue的touchStart事件及click事件冲突问题


Posted in Javascript onJuly 21, 2020

一 、问题:

今天遇到这样问题,给某个元素同时绑定touchStart及click事件后,若在移动设备上,当你点击时,会依次出发这两个事件。因为移动端设备上的click事件触发是会延迟300ms,所以touchStart事件会先触发后再触发click事件。这样导致每次都要执行两次,这样毫无意义。这里提醒下,PC是无法识别touch相关事件

二、解决方式

(1)preventDefault方法

通过使用preventDefault方法(阻止元素默认事件行为的发生)来解决。在touchstart中添加 e.preventDefault()就可以阻止click事件触发。

模板

<ul class="list">
 <li class="item" v-for="item of letters"
 :key="item"
 :ref="item"
 @touchstart="handleTouchStart"
 @click="handleleterClick"
 >{{item}}</li>
 </ul>

上面模板可以使用vue事件修饰符@touchstart.stop.prevent实现,但method中的handleTouchStart 就无需添加 e.preventDefault();

<ul class="list">
 <li class="item" v-for="item of letters"
 :key="item"
 :ref="item"
 @touchstart.stop.prevent="handleTouchStart"
 @click="handleleterClick"
 >{{item}}</li>
 </ul>
methods: {
 handleleterClick (e) {
  console.log('click事件执行一次')
  this.$emit('change', e.target.innerText)
 },
 handleTouchStart (e) {
  console.log('TouchStart执行一次')
  e.preventDefault()//添加阻止click事件触发
  this.touchStatus = true
 }
 }
}

未添加 e.preventDefault()前打印结果

解决vue的touchStart事件及click事件冲突问题

添加 e.preventDefault()后打印结果

解决vue的touchStart事件及click事件冲突问题

(2)判断浏览器是否支持触屏事件

通过"ontouchend" in document来判断浏览器是否支持触屏事件,若支持调用touch事件,不支持调用click事件。

<ul class="list">
 <li class="item" v-for="item of letters"
 :key="item"
 :ref="item"
 @click="handleSelfClick"
 >{{item}}</li>
 </ul>
methods: {
 handleleterClick (e) {
  console.log('click事件执行一次')
  this.$emit('change', e.target.innerText)
 },
 handleTouchStart (e) {
  console.log('TouchStart执行一次')
  this.touchStatus = true
 },
 handleSelfClick (e) {
  console.log('ontouchstart' in document)//打印是否支持touch事件。
  if ('ontouchstart' in document) {
  this.handleTouchStart(e)
  } else {
  this.handleleterClick(e)
  }
 }
 }

以上这篇解决vue的touchStart事件及click事件冲突问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅析javascript闭包 实例分析
Dec 25 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
Dec 16 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 Javascript
JavaScript实现动态添加Form表单元素的方法示例
Aug 14 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
Sep 18 Javascript
将RGB值转换为灰度值的简单算法
Oct 09 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 #Javascript
解决Vue中的生命周期beforeDestory不触发的问题
Jul 21 #Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 #Javascript
vue 清空input标签 中file的值操作
Jul 21 #Javascript
Vue-resource安装过程及使用方法解析
Jul 21 #Javascript
vue中destroyed方法的使用说明
Jul 21 #Javascript
解决vue组件销毁之后计时器继续执行的问题
Jul 21 #Javascript
You might like
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
Javascript倒计时代码
2010/08/12 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
node中的session的具体使用
2018/09/14 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
Python and、or以及and-or语法总结
2015/04/14 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python实现采用进度条实时显示处理进度的方法
2017/12/19 Python
Python Json模块中dumps、loads、dump、load函数介绍
2018/05/15 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
岗位职责的含义
2013/11/17 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
篮球赛口号
2014/06/18 职场文书
加强作风建设心得体会
2014/10/22 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2016入党心得体会范文
2016/01/06 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang