JavaScript-移动端 click触发mouseover事件
两个事件,一个mouseover,一个click。
mouseover在父元素,click在子元素。
在移动端click时,总是会先触发父元素的mouseover事件,然后再触发子元素的click事件。
已经在事件中加入:e.stopPropagation(); 无效。
两个事件都是必须的,因为要兼容pc和移动端,但是在移动端不需要pc端的mouseover效果。
求解?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在ios系统或android系统的原生浏览器,单击事件的事件流一般是:
touchstart->touchend->mouseover->mousemove->mousedown->mouseup->click
所以,单击的时候会触发mouseover还有click事件。
解决的方法:根据safari web开发文档定义,如果在mouseover和mousemove事件中,对象的content(dom重渲染,如文字,颜色等)发生改变,就不会触发之后的click事件。
所以可以在事件中,稍微改变对象的content来阻止事件。
相关文档:
1、safari文档:https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariWebContent/SafariWebContent.pdf
2、w3c草案:
https://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html
可否考虑 在server端 判断是否为手机浏览器, 生成不同的html给 客户端. @js怎样判断手机浏览器?