您的位置:首页 > Web前端 > JavaScript

管理javascript的事件基础知识的总结

2017-04-20 16:00 519 查看
传统事件
1、表单事件
Form元素:submit、reset
按钮类表单元素:click
输入、选择框等元素:change
更换焦点:focus、blur,这两个事件不会冒泡,focusin和focusout可以冒泡
文本输入表单:input事件,在每次更改文本的时候都会触发;
2、window事件
这个事件的发生与浏览器窗口本身,而非窗口中显示的任何特定文档内容有关
Load事件:完全加载的时候触发,DOMContentLoad和readystatechange是load事件的代替;单个元素也可以使用,例如img
Unload事件:当用户离开当前文档,专项其他文档的时候会触发,不能取消用户状态,另外还有beforeunloaded事件,可以询问用户是否确定离开当前页面的机会
Onerror属性:当js出错的时候会触发。但是他不是真正的事件处理程序。14.6
Abort事件:当网络资源因为用户停止加载进程而导致失败就会触发他。
Focus和blur:当浏览器窗口从操作系统中得到或者失去焦点的时候会触发
Resize:当用户调整窗口大小
Scroll:当用户滚动,任何overflow设置为wrap的都可以触发
3、鼠标事件
鼠标事件是可以冒泡的。clientX和clientY属性指定了鼠标在窗口坐标的位置,button和which属性制定了按下的鼠标键是哪一个,当键盘的辅助件按下的时候,对应的属性altkey、ctrlkey、metakey、shiftkey会设置成true;对于click事件detail属性制定了其实单击,双击,还是三击。
Mousemove:移动或者拖动鼠标
Mousedown,mouseup事件:当这两个事件加入时间队列之后,还会触发click事件
Click:dblckick
Mouseover和mouseout:鼠标悬停和移出事件;对于这两个事件有一个relatedTarget属性制定了这个过程涉及到的其他元素,这两个事件冒泡,为了防止冒泡,还提供了两个不冒泡的事件mouseenter和mouseleave
Mousewheel(DOMmouseScroll):鼠标滑轮滚动,传递事件对象属性指定滚轮的大小和方向
4、键盘事件
无论任何元素触发键盘事件,传递给键盘事件的处理程序的事件对象有keycode字段,他指定按下或者释放的键是哪个。还有altkey、ctrlkey、metakey、shiftkey
Keydown和keyup:在两个事件之间会产生一个keypress事件,当按下键重复产生字符的时候,在keyup之前可能会产生多个keypress事件,他指向产生的字符而非是按下的键
5、DOM事件:
推出新的不冒泡事件:focusin、focusout、mouseenter、mouseleave
Mousewheel
Textinput事件,传递给其的事件对象不再有难以使用的数字keycode属性,而是由指定输入文本字符串的data属性,他也不是键盘的特定事件,无论是键盘、剪切、粘贴等任何方式都可以触发,传递对象中有inputmethod属性和一组代表着文本输入种类的常量
传递新的keyboardEvent对象作为参数给keydown、keyup和keypress的事件处理程序来给文本输入事件提供更好的支持
Wheel事件除了接受普通的鼠标事件属性还有deltaX、deltaY和deltaZ属性来报告三个不同的鼠标滚轴,
6、HTML5事件:
Audio和video元素
Html5的拖放API允许javascript应用参与基于操作系统的拖放操作实现web和原生应用间的数据传输。
Dragstart drag  dragend dragenter dragover dragleave drop
其附加属性dataTransfer有一个datatransfer对象,他包含了关于传输的数据和其中可用的格式的信息。
Html5定义了历史管理机制,hashchange和popstate。
Html5表达验证机制,包括验证失败的时候会触发invalid时间。
Html5对离线web应用的支持;offline和online事件,无论何时浏览器失去或者得到网络连接都会在window对象触发他们,标准还定义了大量其他的时间来通知应用下载进度和应用缓存更新
Message事件,在接受每一个消息的时候都会触发;
Html5还定义了一些不在窗口、文档和文档元素的对象上触发的事件。
7、触摸屏和移动设备事件
Orientationchange事件:旋转这些设备的时候产生的事件
Gesturestart和gestureend事件:用于两个手指的缩放和旋转手势,开始的时候产生start,结束的时候为end,这两个事件之间的是跟踪手势的过程叫做gesturechange事件队列,这些事件传递的事件对象属性scale和ratation,scale属性是两个手指之间当前距离和初始距离的比值,ratation属性是指从时间开始手指旋转的角度,以度为单位,正值表示正是真旋转,负值表示逆时针旋转。
Touchstart:当手指触摸到屏幕的时候胡触发的事件
Touchmove事件:当手指移动的时候会处罚touchmove事件,而当手指离开屏幕的时候会触发touchend事件。触摸事件不像是鼠标事件,触摸事件并不直接告诉触摸的坐标,相反,触摸事件传递的坐标,相反触摸事件传递的事件对象有一个changedTouches属性,该属性是一个类数组对象,其每个元素都有描述触摸的位置;
8、注册事件的处理程序
Ie8之前为addEventListener(),而ie9支持的版本是attachEvent()不同方法
(1)addEventListener()的方法;有三个参数,第一个是要注册的事件的名称,但是不应该包括用于设置事件处理程序的on前缀;第二个参数指的是调用函数;最后一个为boolean数值,默认为false,如果为true,函数将会被注册为捕获事件处理程序;ie5以后的版本为attachEvent和detachEvent;
(2)关于事件的取消,在属性上注册事件直接返回false就可以取消事件,但是在addEventListener函数中,我们要调用event.preventDefault();方法取消事件的默认操作;在attachEvent中将returnValue属性值设置为false。
(3)下面讲一下阻止冒泡的方法在支持addEventListener方法的浏览器中使用event.stopPropagation();取消事件传播,另外还有取消后面注册的多个注册函数的方法为stopImmediatePropagation()方法;在不支持addEventListener的函数中将cancelBubble设置为一个true;
(4)关于addEventListener和attachEvent这两个方法的处理函数中this代表的对象,前者是调用的元素,后者代表的是window;
(5)关于其作用域,正常情况下跟js一样使用的是词法作用域的规则,其作用域就是定义作用域,但是唯一有区别的就是在html属性上定义的函数,因为在解析的过程中并不是直接执行的,而是转换成了函数执行,在转换成函数的时候使用with函数扩大了作用域,将其数据都转变了全局变量,作用域也提升到了全局。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 事件机制