一个网页由三层组成(html结构、js行为、css表现),其实一切都是建立在html之上的,html中的dom提供了一些事件,然后通过js进行封装,我们可以使用js来在dom上调用事件。事件有很多,有的我用过,有的我没用过。今天想分析一下。我们都知道事件流有两种,一种是冒泡,一种是捕获。捕获是从身体到触发事件的节点,从外到内的过程。冒泡则相反,是从你触发的节点开始,一步步向外,直到本体,这是一个由内到外的过程。那么它们是同时进行的吗?他们的顺序是先捕获,再冒泡。在addEventListener中,addEventListener的第三个参数(event事件名,函数回调函数,是在捕获阶段还是在冒泡阶段执行)可以改变事件触发的时机。事件对象eventdiv.onclick=function(event){}这里面的事件就是事件对象。我在这里说几个常用的。event.preventDefault()//防止默认事件,表单提交,一个标签。event.stopPropagation()//阻止传播,在一些自定义组件上用到一堆,比如maskhiding,在弹框上会阻止传播。event.target//触发事件的元素,将被事件委托使用。在事件名称下方,我将列出事件。一般事件加载加载成功,window.load(function(){}),加载DOM时会触发类似的DOMContentLoad。unload相反,在卸载过程中发送错误时,这更有趣。img触发错误后,使用占位符图像。听全局错误提示,然后做统计总结,比如fundebug,或者针对公司项目根据特点写一个。滚动时触发,一些效果比如无限滚动,放大缩小窗口时resize变化,滚动上面需要注意debounce,鼠标事件入口,查看mouseeventclick点击事件,点击DOM时触发单击鼠标。单击在用户完成mousedown和mouseup后触发。触发顺序为:mousedown->mouseup->click。mousedown和mouseup鼠标按下和弹出,使用频率不是很高。你可以做一些像拖动一样的事情。mouseout和mouseover将鼠标移出移入,使用时会出现冒泡的问题。可以使用delay的方式解决mouseleave和mouseenter鼠标的移除和移除,解决冒泡问题。mousemovemousemovementkeyboardgeneraleventkeydownpressthekeyboardkeypress中间事件keyupliftthekeyboardtextInput是对keypress的补充,目的是在显示给用户之前更方便地截取文本。textInput事件在文本插入文本框之前触发。compositionstart当IME的文本组合系统打开时触发,表明是时候开始输入了。当您使用输入法时,它会触发compositionupdate在输入字段中插入新字符时触发。compositionend当IME的文本组合系统关闭时触发,表示返回到正常的键盘输入状态。当内容改变时触发控件事件输入。可能是代码触发的变化兼容ie。inputpropertychangechange失去焦点时,内容变化触发blur。失去焦点会触发焦点。获得焦点会触发DOM更改事件。我从未使用过此类事件,前段时间在网上看到了一些。集成写测试地址吧。DOMNodeInserted在插入节点时触发,appendChild在DOMNodeRemoved移除节点时触发,removeChildDOMSubtreeModified发生变化,最后触发DOMNodeInsertedIntoDocumentDOMAttrModifiedDOMCharacterDataModified触摸事件mobiletouchstarttouchtouchmovetouchmovetouchendmoveawaygesturestart-gesturechange-gestureend
