事件分类
鼠标事件:click,mousedown,mousemove,mouseup,contextmenu,mouseover,mouseout,mouseenter,mouseleave
用button区分左右键
onmousedown,onmouseup 利用e.button==2为右键区分(DOM3标准规定: click事件只能监听左键, 只能通过mousedown和mouseup来判断鼠标键)
1.鼠标左键 button = 0
2.鼠标右键 button = 2
3.鼠标滑轮 button = 1
div.onmousedown = function (e) {
var event = e || window.event;
if(event.button == 2){
console.log('right');
}else if(event.button == 0){
console.log('left');
}
}
解决mousedown和click的之间的冲突 (利用事件发生时间来判断 点击事件时间短)
(实现一个物体又可以拖拽又可以点击)
var key = false;//设置了一个标志 false为点击事件 ture为鼠标移动事件
var firstTime = 0;
var lastTime = 0;
div.onclick = function() {
if(key){
console.log('click');
key = false;
}
}
div.onmousedown = function() {
firstTime = new Date().getTime();
console.log('mouseDown');
}
div.onmouseup = function() {
console.log('mouseUp');
//鼠标抬起后 记录时间 超过200ms就是移动事件
lastTime = new Date().getTime();
if( (lastTime - firstTime) < 200){
key = true;
}
}
键盘事件
keydown 、keyup、keypress
keydown>keypress>keyup
keydown和keypress区别:
keydown可以响应任意键盘案件。
keypress只可以字符类键盘按键,keypress返回的是ASCII码,可以转为相应的字符。
键码:event.keyCode
会发生在keydown和keyup事件时,event对象的keycode属性中会包含一个代码,与键盘上一个特定的键对应。
字符编码
keypress事件会影响到屏幕中文本显示。event对象支持charCode属性。
跨浏览器获取字符编码
getCharCode:function(event){
if(typeof event.charCode=='number'){
return event.charCode;
}else{
return event.keyCode;
}
}
文本操作事件
input / focus / blur / change
窗体操作类(window上的事件)
scroll load
支持onload()事件的标签
body 、frame’frameset、iframe、img、script、link