博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动与pc端的touch,mouse,click事件触发过程
阅读量:6618 次
发布时间:2019-06-25

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

测试代码如下:

parent
点击我

 

在PC端:

1.pc端无touch相关事件,所以touchstart,touchmove,touchend事件无响应。

2.点击子元素,因为需要先移动到元素上所以触发了mousemove事件并冒泡到父元素上,然后点击,依次出发mousedown并冒泡,触发mouseup并冒泡,触发click并冒泡。(注意会先执行冒泡事件然后在执行下一个触发事件)

打印如下:

 

3.在元素上拖动时,会在mousedown后执行mousemove事件并执行一次冒泡一次,最后依然会执行click事件。

4.无论点击还是拖动,子元素的click事件都会执行并冒泡。e.stopPropogation()和e.preventDefault()都不可阻止click事件的触发。但是click事件的触发必须是mousedown和mouseup在同一个元素上执行才可以,如果元素滑动到了元素外,则不会触发click事件。

在移动端:

1.在移动端mouse相关事件只在点击的时候有效,如果没有touch事件,只有mouse事件,点击子元素时会依次触发mousemove,mousedown,mouseup,click。如果有touch事件,点击子元素时会依次触发touchstart,touchend,mousemove,mousedown,mouseup,click事件。并且每一个事件都会触发父元素的相关事件。如果在子元素的touchstart或touchend事件中添加

e.preventDefault(),则点击子元素后touchend事件后面的事件都不再触发。测试中发现

如果在父元素的touchstart或touchend事件中添加

e.preventDefault(),则点击子元素后touchend事件后面的事件也都不再触发。
 
注意:滑动元素时在touch事件中添加e.preventDefault()后会阻止onscroll事件,会导致页面不滚动。

2.滑动子元素时,mouse相关事件和click事件不会触发,只会依次触发touchstart,touchmove,touchend并冒泡到父元素上。

 

转载于:https://www.cnblogs.com/BlingSun/p/10154966.html

你可能感兴趣的文章
python网络爬虫的总结_[Python]网络爬虫总结
查看>>
python roc计算_Python画ROC曲线和AUC值计算(附代码)
查看>>
mac python升级2升级3_Mac Python 2.x 升级 Python 3.x
查看>>
如何手动启动消防广播_消防广播使用操作流程
查看>>
cview类 public_MFC视图分割,声明CView类的对象,调试时报不能实例化抽象类的异常,还有报错“CLeftPaneView”:“:”的左边必须是类/结构/联合...
查看>>
mac系统怎么编opencv_[openCV]Mac平台下openCV的搭建(Xcode + openCV 2.4.10)
查看>>
浏览器解析jsx_jsx的本质
查看>>
hexutil加解密_RSA加密---从后台到客户端实现报文加解密
查看>>
jmeter 打开报错_jmeter打开.jmx文件报错的解决办法
查看>>
mysql主从canal_mysql同步之otter/canal环境搭建完整详细版
查看>>
profiling mysql_MySQL profiling 查找Query瓶颈
查看>>
win10 mysql 5.7.21_Window10下mysql 5.7.21 安装配置方法图文教程
查看>>
mysql多副本搭建_50-MySQL教程-外键约束-一对多模式 - 副本
查看>>
mysql是gplv3_关于GPLv3
查看>>
mysql主从 速度_mysql主从复制+mysql主从复制延迟解决方案
查看>>
mysql insert hex_mysql中用HEX和UNHEX函数处理二进制数据的导入导出&&mysql的hex()和unhex()函数...
查看>>
mysql 经纬度范围_根据经纬度查询最近距离,mysql查询经纬度附近范围
查看>>
mysql健康检查_MySQL服务健康检查脚本
查看>>
stringbuffer 编码_Java中String、StringBuffer(Builder)类
查看>>
apriori包的使用_使用Aprior算法进行关联分析
查看>>