解决vue v-if在ios下 click需要两次触发的bug

解决vue v-if在ios下 click需要两次触发的bug

bug

vue绑定了click事件,但是在ios手机上需要点击两次才能触发事件

猜想

  1. ios不允许div绑定点击
  2. vue事件绑定对于ios这个版本的不兼容
  3. ios处理点击时有其他的操作

踩坑

  1. 给div改成btn也是不好使的。。。。 验证失败

  2. 找了几台不同ios版本的都存在这个问题,可以先排除这个猜想。

  3. 当第一次点击时可以明显的看出来会有一个黑色框子闪现,然后去百度就发现了css的-webkit-tap-highlight-color这个属性,点击查看文档

  4. 当时研究到这的时候都已经放弃了,就把这个给禁止掉了,操作就变成了点击一次什么反应都没有,第二次才会触发事件,产品小姐姐比较认真负责坚决不允许这种影响用户体验的bug出现。

  5. 在已经绝望的时候,突然脑子里面闪过了一个念头,如果第一次都能触发hover事件,那么touchstart事件也可以有??诶!说干就干,竟然好使!。

  6. 后续:后来发现不仅可以出发start事件,touchend也可以,并且不需要在start方法里面写任何代码,只要绑定一个空的事件就ok了

解决

vue:

<div v-if="condition">
	<div @click="doClick" @touchstart.prevent="handleTouchStart">点我</div>
</div>

javascript:

methods: {
	doClick(){
		//do something
	},
	
	//这个方法可以让ios点一次就触发 click事件!!!
	handleTouchStart(){
	}
}
原创文章 2 获赞 1 访问量 254

猜你喜欢

转载自blog.csdn.net/qq_37172634/article/details/102505821
今日推荐