1. 事件对象兼容(兼容IE)
e = e || window.event;
2. 鼠标事件及方法;
属性名 含义
e.buttons 返回鼠标点击按键(1左键,2右键,4中键滚轮)
e.offsetX / offsetY 获取事件触发最近的盒子(事件源)的坐标
e.clientX / clientY 获取可视区的坐标(根据浏览器的定位)
e.screenX / screenY 获取整个屏幕的坐标
e.pageX / e.pageY 获取文档的坐标(包含滚动条)
3. 获取键码兼容
e.keyCode || e.which
4. 特殊键码:是否按下alt ctrl 和 shift
e.altKey e.ctrlKey e.shiftKey 返回值是布尔值;
可以用来判断组合键
if(e.keyCode==13 && e.altKey){
alert('同时按下了enter和alt');
}
5. 阻止默认事件(有兼容)
e.preventDefault();
}else {
window.event.returnValue = false;
//return false;
}
6. 事件流
子元素的事件被触发时,父级也会被触发(冒泡)
一个完整事件流包含 捕获阶段 ---> 目标阶段 --->冒泡阶段
7. 冒泡是可以阻止的
e . stopPropagation( );
e . cancelBubble=true;//兼容IE
8. 事件监听
DOM0级事件处理,是一种赋值方式,是被所有浏览器所支持的,简单易懂容易操作;
DOM2级事件处理是所有DOM节点中的方法,可以重复绑定,但是浏览器兼容存在问题;
oDiv.attachEvent("onclick", function(){ ... }); // IE只有冒泡阶段,所以没有第三个参数,而且需要加on;
}else{
oDiv.addEventListener( "click", function(){ ... },false); // false指冒泡阶段
}
//移除事件监听,第二个参数为必须,移除的事件处理函数
oDiv.removeEventListener( "click",fn)
oDiv.detachEvent("onclick",fn)
9. 判断事件源:
e.target || e.srcElement
网友评论