javascript事件上

javascript事件上

ID:13092719

大小:60.50 KB

页数:5页

时间:2018-07-20

javascript事件上_第1页
javascript事件上_第2页
javascript事件上_第3页
javascript事件上_第4页
javascript事件上_第5页
资源描述:

《javascript事件上》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、事件(上)JavaScript事件列表事件解说一般事件onclick鼠标点击时触发此事件ondblclick鼠标双击时触发此事件onmousedown按下鼠标时触发此事件onmouseup鼠标按下后松开鼠标时触发此事件onmouseover当鼠标移动到某对象范围的上方时触发此事件onmousemove鼠标移动时触发此事件onmouseout当鼠标离开某对象范围时触发此事件onkeypress当键盘上的某个键被按下并且释放时触发此事件.onkeydown当键盘上某个按键被按下时触发此事件onkeyup当键盘上某个按键被按放开时触发此事件页面相关事件onab

2、ort图片在下载时被用户中断onbeforeunload当前页面的内容将要被改变时触发此事件onerror出现错误时触发此事件onload页面内容完成时触发此事件onmove浏览器的窗口被移动时触发此事件onresize当浏览器的窗口大小被改变时触发此事件onscroll浏览器的滚动条位置发生变化时触发此事件onstop浏览器的停止按钮被按下时触发此事件或者正在下载的文件被中断oncontextmenu当弹出右键上下文菜单时发生onunload当前页面将被改变时触发此事件表单相关事件onblur当前元素失去焦点时触发此事件onchange当前元素失去焦点

3、并且元素的内容发生改变而触发此事件onfocus当某个元素获得焦点时触发此事件onreset当表单中RESET的属性被激发时触发此事件onsubmit一个表单被递交时触发此事件了解上面的事件如此简单,那么事件还有什么可讲的呢?问题一:每个事件只能注册一个函数varoDiv=document.getElementById("oDiv");oDiv.onclick=fn1;oDiv.onclick=fn2;functionfn1(){alert("我被覆盖了!")}functionfn2(){alert("只有我被执行到!")}解决方案一:obj.oncli

4、ck=function(){fn1();fn2();fn3();};缺陷一:需要将所有函数一次添加进去,不能在运行时添加缺陷二:在事件处理函数中this将指向window,而不是obj解决方案二:functionaddEvent(fn,evtype,obj){//obj是要添加事件的HTML元素对象//evtype是事件名字,不包含on前缀,因为每个都有on,所以写个on是多余的//fn是事件处理函数varoldFn;if(obj["on"+evtype]instanceofFunction){oldFn=obj["on"+evtype];//当添加函数

5、时,如果已注册过了,则将其保存起来}obj["on"+evtype]=function(){if(oldFn){oldFn.call(this);}fn.call(this);//使用call方法,使事件处理函数中的this仍指向obj};}这样已经解决了问题,但如何删除事件呢?如果直接将对象的onevtype这类的属性赋值为null将会删除所有的事件处理函数!解决方案二的修改版:先将事件存储起来,存储在对象的__EventHandles属性里面eventHandlesCounter=1;//计数器,将统计所有添加进去的函数的个数,0位预留作其它用fun

6、ctionaddEvent(fn,evtype,obj){if(!fn.__EventID){//__EventID是给函数加的一个标识,见下面给函数添加标识的部分fn.__EventID=eventHandlesCounter++;//使用一个自动增长的计数器作为函数的标识以保证不会重复}if(!obj.__EventHandles){obj.__EventHandles=[];//当不存在,也就是第一次执行时,创建一个,并且是数组}if(!obj.__EventHandles[evtype]){//将所有事件处理函数按事件类型分类存放obj.__Ev

7、entHandles[evtype]=[];//当不存在时也创建一个数组if(obj["on"+evtype]instanceofFunction){//查看是否已经注册过其它函数//如果已经注册过,则将以前的事件处理函数添加到数组下标为0的预留的位置obj.__EventHandles[evtype][0]=obj["on"+evtype];obj["on"+evtype]=handleEvents;//使用handleEvents集中处理所有的函数}}obj.__EventHandles[evtype][fn.__EventID]=fn;//如果函数

8、是第一次注册为事件处理函数,那么它将被添加到数组中,函数的标识作为下标//如果函

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。