bug
vue绑定了click事件,但是在ios手机上需要点击两次才能触发事件
猜想
- ios不允许div绑定点击
- vue事件绑定对于ios这个版本的不兼容
- ios处理点击时有其他的操作
踩坑
-
给div改成btn也是不好使的。。。。 验证失败
-
找了几台不同ios版本的都存在这个问题,可以先排除这个猜想。
-
当第一次点击时可以明显的看出来会有一个黑色框子闪现,然后去百度就发现了css的
-webkit-tap-highlight-color
这个属性,点击查看文档 。 -
当时研究到这的时候都已经放弃了,就把这个给禁止掉了,操作就变成了点击一次什么反应都没有,第二次才会触发事件,产品小姐姐比较认真负责坚决不允许这种影响用户体验的bug出现。
-
在已经绝望的时候,突然脑子里面闪过了一个念头,如果第一次都能触发hover事件,那么
touchstart
事件也可以有??诶!说干就干,竟然好使!。 -
后续:后来发现不仅可以出发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(){
}
}