JavaScript-移动端 click触发mouseover事件

发布于 2016-12-08 05:58:58 字数 221 浏览 1382 评论 2

两个事件,一个mouseover,一个click。
mouseover在父元素,click在子元素。
在移动端click时,总是会先触发父元素的mouseover事件,然后再触发子元素的click事件。
已经在事件中加入:e.stopPropagation(); 无效。
两个事件都是必须的,因为要兼容pc和移动端,但是在移动端不需要pc端的mouseover效果。
求解?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生未歇 2017-07-03 13:08:34

在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

想挽留 2017-03-20 05:25:04

可否考虑 在server端 判断是否为手机浏览器, 生成不同的html给 客户端. @js怎样判断手机浏览器?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文