JS事件模型:
事件流:
一个事件可以用于很多元素 每个元素必须以指定的顺序响应事件
事件冒泡:
事件从事件发生的目标最内部开始出发 想法触发到最外面 IE低版本和标准浏览器的冒泡不一样
事件补货:
她和冒泡的是相反的 它的触发顺序是从最外层的对象到最里层的对象
DOM事件流:
它是同时支持事件补货和事件冒泡的,但是事件捕获先发生 DOM事件模型有一个特点是文本节点
也可以触发事件(IE中不行)
事件处理程序/监听器:
事件是被用户或浏览器执行的某种行为(事件被命名为click/load/mouseover等等)
为响应一个事件而被调用的函数称为事件处理程序(DOM中叫做事件监听器)
传统事件处理程序指派方法:
这种方法可以为一个事件指派一个事件处理程序 他被所有的现代浏览器所支持
现代事件处理程序指派方法:
这种方法可以为一个事件指派多个事件处理程序 只被现代的浏览器支持 存在浏览器不兼容问题
DOM:
使用addEventListener()和removeEventListener()方法完成事件处理程序指派和删除的任务
有三个参数 1.事件的名称
2.要指派的函数
3.是否处理程序要用在冒泡或捕获阶段(用在捕获阶段用true/冒泡用false)
解决兼容性问题:
if(document.addEventListener){ //DOM
}else if(document.attachEvent){ //IE
}
事件处理程序的返回值:
他的返回值可以影响事件的默认行为 就是事件发生时不需要处理就会正常发生的行为
Event对象:
event对象值在事件被触发时创建 并且可以被事件处理程序访问 所有事件执行完成后销毁 IE和DOM不兼容
这个对象包含了事件发生时的特定信息
1.触发事件的对象
2.事件发生时的鼠标信息和键盘信息
属性和方法:
IE和DOM的属性方法有差别:
IE:
1.srcElement 导致事件发生的元素
2.ScreenX 鼠标指针相对于整个计算机屏幕的X坐标
3.KeyCode 对于keypress事件,指示按下的键的Unicode字符/对于keydown/keyup事件,指示按下的键盘是数字表示器
4.cancelBubble 设置为true时取消冒泡
5.returnValue 值为false时取消事件默认行为
DOM:
1.target 触发事件元素/对象
2.screenX 鼠标指针相对于整个计算机屏幕的X坐标
3.KeyCode 指示按下的键盘是数字表示器
4.StopPropagation() 调用可阻止事件的冒泡
5.preventDefault()阻止事件默认行为
事件类型:
根据触发事件的对象以及事件触发的行为
鼠标事件:
click/dblclick(双击左键时)/mousedown(按下任意鼠标键)/mouseout(移出)
mouseover(移动,和mouseout搭配使用)/mouseup(释放,和mousedown搭配使用)
mousemove(重复发生)
事件发生顺序:mousedown > mouseup > click > mousedown > mouseup > click > dblclick
键盘事件:
使用键盘时发生的事件:
keydown:按下一个键发生的事件 按住不放就重复发生
keypress:按住不包括shift和alt的一个字符键发生的事件 按住不放重复发生
kayup:松开一个键的时候发生
顺序:
按下字符键时:
Keydown > keypress > keyup
按下非字符键(shift 等)时:
Keydown > keyup
原文:http://www.cnblogs.com/ROUJIAMOYU/p/5410740.html