this指向
1.事件中this永远指向调用者。
2.在全局函数中this指向window对象
3.任何回调函数中的this
event
1.阻止:event.stopPropagation()
2.兼容:var e = e || window.event;
2.事件源的属性:target 兼容:var tar = e.target || e.srcElement;
3.e.target.nodeName == “BUTTON”//双引号里必须要大写,写的是标签
js是一个事件驱动的语言
事件
组成 :on + 事件名
1.onclick:点击事件
2.ondblclick
3.onmouseover:鼠标移入事件====优化版:onmouseenter
4.onmouseout:鼠标移出事件
5.onmousemove:鼠标移动事件—高频次触发事件
元素事件==》只针对结果,不在乎过程
1.onblur:失去焦点事件
2.onfocus:获取焦点onblur
3.oninput:写入内容时触发
4.onchange:发生改变时触发-->常用在select
5.onsubmit:提交是触发
6.onmousedown:按下不抬起
7.onmouseup:抬起事件
事件对象
1.时间对象里的状态类 ==timeStamp:记录打开的时间
2.数据类:
获取当前事件的鼠标的位置
事件发生在谁的身上
坐标的获取
1.offset:再谁身上发生的事件,那么就返回鼠标根据那个元素的定位
2.client:根据游览器的边缘的来获取值
3.screen:根据屏幕的边缘来获取值
4.page:根据浏览器文档的顶部来进行定位
键盘事件
1.onkeydown:键盘按下
正常按键:
var keycode = e.keyCode || e.which;
左上右下:37,38,39,40回车:13;
组合按键:ctrlkey+shiftkey+altkey
2.onkeyup:键盘抬起
3.onkeypress:按下抬起算一次
事件冒泡
1.数据(事件携带的信息)事件流;
2.过程叫冒泡或捕获;
3.阻止事件冒泡:
if(e.stopPropagation ){
e.stopPropagation()
}else{
e.cancelBubble = true;
}
鼠标右击 :oncontextmenu
取消默认事件:e.preventDefault()
if(e.preventDefault ){e.preventDefault() }else{returnValue = false}
事件监听
添加事件监听:addEventListener 上限=》10个
删除事件监听:removeEventListener
对象.addEventListener("click",fn)
事件监听的好处
1.可以绑定多个事件处理函数
2.不能被客户端轻易更改时间
绑定在DOM对象上的事件obox.onclick= 事件处理函数
DOM事件
监听事件流,事件触发过程的监听
DOM2事件绑定
事件委托解决的问题
1.事件绑定太多次,使用频率不高,就形成了事件冗余
2.某些动态生成的元素也可以
3.把事件绑定给父级,父级触发事件的时候通过事件源(taeget)去判定,当前触发的事件的事件源是否符合规定。
符合规定执行代码块
不符合规定什么都不做