博客
关于我
vue的touchStart事件及click事件冲突问题
阅读量:539 次
发布时间:2019-03-08

本文共 1166 字,大约阅读时间需要 3 分钟。

遇到一个问题:在移动设备上,当你点击元素时,touchStart和click事件会依次触发。由于click事件在移动端有300ms延迟,导致touchStart先触发,随后click事件再被触发,这种情况会导致每次操作执行两次毫无意义的代码。此外,PC端无法识别touch相关事件。

为了解决这个问题,可以采取以下两种方式:

(1)使用preventDefault方法

通过在touchstart事件中添加e.preventDefault(),可以阻止click事件的触发。这种方法在Vue框架中可以通过事件修饰符@touchstart.stop.prevent实现。在method中不需要手动添加e.preventDefault(),只需在触发touchStart事件时调用阻止默认行为即可。

示例代码:

  • {{ item }}
methods: {  handleLetterClick(e) {    console.log('click事件执行一次');    this.$emit('change', e.target.innerText);  },  handleTouchStart(e) {    console.log('TouchStart执行一次');    this.touchStatus = true;    e.preventDefault(); // 在method中无需手动添加  }}

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

可以通过检查'ontouchstart' in document来判断浏览器是否支持触屏事件。如果支持touch事件,则调用touchStart事件处理逻辑;如果不支持,直接调用click事件。

示例代码:

  • {{ item }}
methods: {  handleLetterClick(e) {    console.log('click事件执行一次');    this.$emit('change', e.target.innerText);  },  handleTouchStart(e) {    console.log('ontouchstart' in document);    if ('ontouchstart' in document) {      this.handleTouchStart(e);    } else {      this.handleLetterClick(e);    }  },  handleSelfClick(e) {    // 可以根据需要添加额外逻辑  }}

通过上述方法,可以有效避免在移动设备上触发不必要的click事件,从而优化用户体验。

转载地址:http://cgpiz.baihongyu.com/

你可能感兴趣的文章
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
查看>>
org.tinygroup.serviceprocessor-服务处理器
查看>>
org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
查看>>
org/hibernate/validator/internal/engine
查看>>
Orleans框架------基于Actor模型生成分布式Id
查看>>
SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
查看>>
ORM sqlachemy学习
查看>>
Ormlite数据库
查看>>
orm总结
查看>>
ORM框架 和 面向对象编程
查看>>
OS X Yosemite中VMware Fusion实验环境的虚拟机文件位置备忘
查看>>
os.environ 没有设置环境变量
查看>>
os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
查看>>
os.removexattr 的 Python 文档——‘*‘(星号)参数是什么意思?
查看>>
os.system 在 Python 中不起作用
查看>>
OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
查看>>
OSCACHE介绍
查看>>
SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
查看>>