🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] * * * * * ### 一. 鼠标点击事件: * DOM2级事件有:click, mousedown, mouseup, mousemove, mouseout ; * DOM3级事件有:mouseenter, mouseleave, dbclick ~~~ 触发顺序: 1. mousedown 2. mouseup 3. click 4. mousedown 5. mouseup 6. click 7. dbclick ~~~ >[danger] 如果禁掉 down 或 up 事件,那么就不会有 click 事件了,也就没有 dbclick 事件了,而且有些事件必须由鼠标来点击触发,不能由键盘触发; 当然还有滚轮事件 * * * * * ### 二. 鼠标点击事件的位置 ![](https://box.kancloud.cn/87c7b9f1aa4d4f7728761ae6982fbcd0_805x488.png) 1. 客户区坐标位置: `(clientX,clientY)` 这个里的值可以通过 `event.clientX/Y` 得到,指的是点击的那个点在浏览器视口上的位置 ![](https://box.kancloud.cn/95a36ffda6883e5c4dd5362adc8488d7_105x50.png) 2. 页面坐标位置: `(pageX,pageY)` 这个是点击的点相对于网页,整个文档的位置,如果没有滚动页面,那么和客户区位置相同 可是一旦滚动,那就不同了 ![](https://box.kancloud.cn/fcfe67cf4b632304dfc6d1118f3ec6e4_87x45.png) 3. 屏幕坐标位置 `(screenX,screenY) `这个是相对于整个电脑屏幕的,有时候浏览器会是全屏或者缩小; ![](https://box.kancloud.cn/bd25ee6d085a14241a66775afcc2dee4_127x49.png) 4. 相对于父包含框的位置 ![](https://box.kancloud.cn/07d9feb65628c81b1ce41a0df4beaf58_102x47.png) 5. 下面这俩未知 ![](https://box.kancloud.cn/6a87ef1e2f2c950b8a369b704507f981_51x52.png) ![](https://box.kancloud.cn/c8cd710489151ee86fb1abe09c256d8d_95x50.png) ~~~ .button 属性 DOM 的事件规则下,有3个可能的值 0:表示主鼠标按钮(左键) 1:鼠标按钮(滚动按钮) 2:次鼠标按钮(有右键) ~~~ `.detail` 属性 包含一个数值,表示在给定位置上发生了多少次单击。在同一个像素上相继的发生一次 `mousedown` 和 `mouseup` 事件才算做一次单击。`detail` 属性从1开始计数,每次单击后会递增,如果在 `mousedown` 和 `mouseup` 之间移动了位置,则 `detail` 会被重置为0 * * * * * ### 三. 触摸屏上的 `touch` 事件对应 ~~~ 1. touchstart 2. mouseover 3. mousemove(一次) 4. mousedown 5. mouseup 6. click 7. touchend ~~~ * * * * * ### 四. 鼠标滚轮事件 `IE6` 开始支持,这一事件可在任何元素上触发 `.wheelDelta` 是 120(滚轮向前)/-120(滚轮向后)的倍数 * * * * * ### 五. 键盘和文本事件 ~~~ keydown :当用户按下键盘上的任意键时触发,如果按住不放会重复触发 keypress: 当用户按住键盘上的字符键时触发,如果按住不放会重复触发 keyup: 当用户释放键盘上的键时触发 ~~~ 所有元素都支持以上事件,如果需要处理这一事件,可查询具体的键码,进行相应的操作。 `textInput` 事件(`DOM3`) 这一事件只有在可编辑区域才会触发;且用户按下能输入实际字符的键时才会被触发;比如按了退格键,由于能够影响文本显示,则会触发 `keypress` 事件,但无法触发`textInput` 事件。 通过 `.inputMethod` 还能知道文本是怎么输入的(高程3中说仅 `IE` 支持,未做验证,但是个思路) ![](https://box.kancloud.cn/904e538b5ec469f95041131754b987eb_572x350.png) * * * * * ### 六. 变动事件 `DOM2` 级的变动(`mutation`)事件能在 `DOM` 中的某一部分发生变化时给出提示。这一事件到目前未曾用过。 ### 七. `HTML5` 事件 1. `contextmenu` 事件,经测试不可用 2. `beforeunload` 在用户点击了关闭标签页按钮,或者使用 `window.close()` 被调用时候,原理就是页面卸载之前,提示用户是否继续 如果页面有什么重要数据未保存等,保险起见吧 `event.returnValue` 显示要提示的信息 3. `DOMContentLoaded` `window` 的 `load` 事件是在所有资源都加载完成后触发。而这个事件只要 `DOM` 树生成好了,就会触发,而不去理会图像、js、css等资源是否已经下载完成 `IE9` 之前的不支持 4. `hashchange` 专门应对地址后面的 `hash` 值的变化,`location.hash`