浏览器端的的事件流

事件传递的方向
冒泡阶段 和 捕获阶段
事件最开始由window接收到,从顶层往下传递,一层一层直到传递到事件的触发元素,这一阶段称之为捕获阶段。
然后从子元素开始冒泡事件,然后传递给父元素,一层一层往外传。传回到window,这一阶段称之为冒泡阶段。


**阻止事件的传递 **
event.stopPropagation()
阻止捕获和冒泡阶段中当前事件的进一步传播。
当你调用该函数过后,事件不再传递,不管是处于冒泡阶段还是捕获阶段。
event.stopImmediatePropagation()
阻止事件冒泡并且阻止相同事件的其他侦听器被调用。
效果和stopPropagation一样,然而还能阻止剩余相同事件的监听器的回调调用。
event.preventDefault
如果此事件没有被显式处理,那么它默认的动作也不要做(因为默认是要做的)。此事件还是继续传播,除非碰到事件侦听器调用stopPropagation() 或stopImmediatePropagation(),才停止传播。
阻止默认动作,一些控件是有默认事件处理器的(如input[type=checkbox],...),这个可以用来阻止默认事件。但不会影响事件传播。
事件的大体分类
windos事件
属性 | 值 | 描述 |
---|---|---|
onafterprint | script | 文档打印之后运行的脚本。 |
onbeforeprint | script | 文档打印之前运行的脚本。 |
onbeforeunload | script | 文档卸载之前运行的脚本。 |
onerror | script | 在错误发生时运行的脚本。 |
onhaschange | script | 当文档已改变时运行的脚本。 |
onload | script | 页面结束加载之后触发。 |
onmessage | script | 在消息被触发时运行的脚本。 |
onoffline | script | 当文档离线时运行的脚本。 |
ononline | script | 当文档上线时运行的脚本。 |
onpagehide | script | 当窗口隐藏时运行的脚本。 |
onpageshow | script | 当窗口成为可见时运行的脚本。 |
onpopstate | script | 当窗口历史记录改变时运行的脚本。 |
onredo | script | 当文档执行撤销(redo)时运行的脚本。 |
onresize | script | 当浏览器窗口被调整大小时触发。 |
onstorage | script | 在 Web Storage 区域更新后运行的脚本。 |
onundo | script | 在文档执行 undo 时运行的脚本。 |
onunload | script | 一旦页面已下载时触发(或者浏览器窗口已被关闭)。 |
form事件
属性 | 值 | 描述 |
---|---|---|
onblur | script | 元素失去焦点时运行的脚本。 |
onchange | script | 在元素值被改变时运行的脚本。 |
oncontextmenu | script | 当上下文菜单被触发时运行的脚本。 |
onfocus | script | 当元素获得焦点时运行的脚本。 |
onformchange | script | 在表单改变时运行的脚本。 |
onforminput | script | 当表单获得用户输入时运行的脚本。 |
oninput | script | 当元素获得用户输入时运行的脚本。 |
oninvalid | script | 当元素无效时运行的脚本。 |
onreset | script | 当表单中的重置按钮被点击时触发。HTML5 中不支持。 |
onselect | script | 在元素中文本被选中后触发。 |
onsubmit | script | 在提交表单时触发。 |
keyboard事件
属性 | 值 | 描述 |
---|---|---|
onkeydown | script | 在用户按下按键时触发。 |
onkeypress | script | 在用户敲击按钮时触发。 |
onkeyup | script | 当用户释放按键时触发。 |
鼠标事件
属性 | 值 | 描述 |
---|---|---|
onclick | script | 元素上发生鼠标点击时触发。 |
ondblclick | script | 元素上发生鼠标双击时触发。 |
ondrag | script | 元素被拖动时运行的脚本。 |
ondragend | script | 在拖动操作末端运行的脚本。 |
ondragenter | script | 当元素元素已被拖动到有效拖放区域时运行的脚本。 |
ondragleave | script | 当元素离开有效拖放目标时运行的脚本。 |
ondragover | script | 当元素在有效拖放目标上正在被拖动时运行的脚本。 |
ondragstart | script | 在拖动操作开端运行的脚本。 |
ondrop | script | 当被拖元素正在被拖放时运行的脚本。 |
onmousedown | script | 当元素上按下鼠标按钮时触发。 |
onmousemove | script | 当鼠标指针移动到元素上时触发。 |
onmouseout | script | 当鼠标指针移出元素时触发。 |
onmouseover | script | 当鼠标指针移动到元素上时触发。 |
onmouseup | script | 当在元素上释放鼠标按钮时触发。 |
onmousewheel | script | 当鼠标滚轮正在被滚动时运行的脚本。 |
onscroll | script | 当元素滚动条被滚动时运行的脚本。 |
事件涉及到的坐标体系
鼠标事件中一些坐标
鼠标事件中,传递给回调函数的参数是一个event。 有两个是常用的和坐标相关的属性。
event.clientX event.clientY
解释摘自mdn。即这连个值是指浏览器可是区域的坐标。
"clientX"
,long
型可选,默认为 0
,设置鼠标事件时相对于客户端窗口的水平坐标位置;该操作并不会改变真实鼠标的位置。
"clientY"
,long
型可选,默认为 0
,设置鼠标事件时相对于客户端窗口的垂直坐标位置;该操作并不会改变真实鼠标的位置。
dom元素中的一些坐标
Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置
