js 事件

2020-10-05  本文已影响0人  lucky_yao

1:什么是事件?

人与机的交互就是事件。

2:事件类型:

ui事件

*onscroll 滚动条事件

onload 页面加载触发

unload 页面关闭触发

onresize 改变浏览器窗口触发

onabort 图像加载被中断触发

error 错误信息时触发

焦点事件(表单事件)

*onfocus 获得焦点事件(没有冒泡,浏览器都支持)

*onblur 失去焦点事件(没有冒泡,浏览器都支持)

onfocusin 获得焦点事件(有冒泡,IE支持)

onfocusout 失去焦点事件(有冒泡,IE支持)

onselect 选中文本时触发

*onchange 当改变一个元素的值且失去焦点时

鼠标事件

*onclick 当用户单击对象时

*ondblclick 当用户双击对象时

*onmouseout 移出事件

*onmouseover 移入事件

*onmousemove 移入元素的内部不断的移动时触发

onmousedown 在用户按下了任意鼠标按钮时触发

onmouseup 在用户释放鼠标按钮时触发

键盘事件

onKeydown: 当用户按下键盘上的任意键时触发。

onKeypress: 当用户按下键盘上的字符键时触发。

onKeyup: 当用户释放键盘上的键时触发。

keyCode 返回键盘键对应的编码

3:事件的传播机制?

事件分为2种传播机制(事件流):

1:冒泡 (IE提出的事件流是冒泡)

2:捕获  (谷歌和火狐提出的事件流是捕获)

4:什么是冒泡事件?

1:冒泡事件是由微软公司提出的,从触发底部事件一直延续到最外层,这个现象就是冒泡!

2:只有嵌套关系的标签和都是一样的事件才可能产生冒泡!

5:阻止冒泡事件的方法:

1:evt.stopPropagation() 无法阻止 IE 低版本事件冒泡;

2: evt.cancelBubble = true;兼容 IE 低版本冒泡;

6:阻止冒泡事件的兼容写法:

if(evt.cancelBubble=true){

evt.cancelBubble=true;

}else{

evt.stopPropagation();

}

7:封装阻止冒泡事件方法:

function stopBubble(event){

    if(event.stopPropagation){

        event.stopPropagation();

    }else{

        event.cancelBubble = true;

    }

}

8:DOM0事件处理程序:

1:简单来说就是所有的事件叫DOM0事件。

    举例:

    onclick,onmouseover,onmouseout....

    2:DOM就是文档对象模型,0是指这个事件的最初版本

9: DOM2事件处理程序:

1:addEventListener(事件,函数,布尔值)   绑定事件方法  IE不支持

    举例:

        addEventListener('click',function(){

        },false)

2:是 true 的话是捕获事件,是 false 的话是冒泡事件;

3:removeEventListener() 删除事件方法  IE不支持

10: IE的DOM2方法:

attachEvent('事件',函数)

detachEvent('事件',函数)

11:事件委托

利用冒泡的原理,把事件加到父级上,触发执行效果。

把该是自己的事件交给其他标签来完成,就是事件委托!

把li的事件委托给父元素ul来完成。

事件委托只能是把子元素的事件委托给父元素。

12:事假委托的优点:

1:提高代码性能,运行速度加快

2:节省内存空间

13: 事件源的兼容

target 是event对象下面的属性,这个属性指向事件源

event.target 是w3c的写法,ie浏览器不支持

event.srcElement 这是IE的写法(兼容低版本IE)

兼容写法

var targt=e.target||e.srcElement;

上一篇下一篇

猜你喜欢

热点阅读