ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

onClick和addEventListener的区别

2021-09-19 22:33:13  阅读:140  来源: 互联网

标签:function 触发 鼠标 区别 对象 用户 onClick addEventListener


文章目录

区别

onClick

on点击事件总结

onactivate 当对象设置为活动元素时触发。 
onafterprint 对象所关联的文档打印或打印预览后立即在对象上触发。 
onbeforeactivate 对象要被设置为当前元素前立即触发。 
onbeforecut 当选中区从文档中删除之前在源对象触发。 
onbeforedeactivate 在 activeElement 从当前对象变为父文档其它对象之前立即触发。 
onbeforeeditfocus 在包含于可编辑元素内的对象进入用户界面激活状态前或可编辑容器变成控件选中区前触发。 
onbeforepaste 在选中区从系统剪贴板粘贴到文档前在目标对象上触发。 
onbeforeprint 对象的关联文档打印或打印预览前在对象上触发。 
onbeforeunload 在页面将要被卸载前触发。 
onclick 在用户用鼠标左键单击对象时触发。 
oncontextmenu 在用户使用鼠标右键单击客户区打开上下文菜单时触发。 
oncontrolselect 当用户将要对该对象制作一个控件选中区时触发。 
oncut 当对象或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。 
ondblclick 当用户双击对象时触发。 
ondeactivate 当 activeElement 从当前对象变为父文档其它对象时触发。 
ondrag 当进行拖曳操作时在源对象上持续触发。 
ondragend 当用户在拖曳操作结束后释放鼠标时在源对象上触发。 
ondragenter 当用户拖曳对象到一个合法拖曳目标时在目标元素上触发。 
ondragleave 当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。 
ondragover 当用户拖曳对象划过合法拖曳目标时持续在目标元素上触发。 
ondragstart 当用户开始拖曳文本选中区或选中对象时在源对象上触发。 
ondrop 当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。 
onfilterchange 当可视滤镜更改状态或完成转换时触发。 
onfocusin 当元素将要被设置为焦点之前触发。 
onfocusout 在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。 
onkeydown 当用户按下键盘按键时触发。 
onkeypress 当用户按下字面键时触发。 
onkeyup 当用户释放键盘按键时触发。 
onload 当浏览器装入对象后立即触发。 
onlosecapture 当对象失去鼠标捕捉时触发。 
onmousedown 当用户用任何鼠标按钮单击对象时触发。 
onmouseenter 当用户将鼠标指针移动到对象内时触发。 
onmouseleave 当用户将鼠标指针移出对象边界时触发。 
onmousemove 当用户将鼠标划过对象时触发。 
onmouseout 当用户将鼠标指针移出对象边界时触发。 
onmouseover 当用户将鼠标指针移动到对象内时触发。 
onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。 
onmousewheel 当鼠标滚轮按钮旋转时触发。 
onmove 当对象移动时触发。 
onmoveend 当对象停止移动时触发。 
onmovestart 当对象开始移动时触发。 
onpaste 当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。 
onpropertychange 当在对象上发生对象上发生属性更改时触发。 
onreadystatechange 当对象状态变更时触发。 
onresizeend 当用户更改完控件选中区中对象的尺寸时触发。 
onresizestart 当用户开始更改控件选中区中对象的尺寸时触发。 
onscroll 当用户滚动对象的滚动条时触发。 
onselect 当当前选中区改变时触发。 
onselectstart 对象将要被选中时触发。 
onunload 在对象卸载前立即触发。

addEventListener

addEventListener(event, function, useCapture)

event:点击事件去掉on,比如click
function:回调函数,当事件触发后执行此函数
useCapture:Boolean类型,true表示捕获,默认的false表示冒泡。

移除事件监听

如果要移除 addEventListener() 添加的事件监听,就要使用removeEventListener(),语法是:

removeEventListener(event, function)

参数与addEventListener()一致。

兼容性

IE 8及更早的版本,和Opera 7.0及更早的版本,不支持 addEventListener() 和 removeEventListener() 方法,他们使用的是一下方法代替:

添加事件:
attachEvent(event, function)

移除事件:
detachEvent(event, function)

冒泡与捕获

这个参数设置的是元素事件的触发顺序,即页面中某元素设置了事件监听,其内部元素也设置有事件监听,冒泡是先触发最内部元素的事件,再依次触发外一层元素的事件,捕获刚好相反,由外到内依次触发

<div id="parent1">
	<div id="child1" style="height:200px;background:#0cc">
	冒泡
	</div>
</div>
<div id="parent2">
	<div id="child2" style="height:200px;background:#0cc">
	捕获
	</div>
</div>

<script>
	var parent1 = document.getElementById("parent1");
	var child2 = document.getElementById("child1");
	var parent2 = document.getElementById("parent2");
	var child2 = document.getElementById("child2");
	parent1.addEventListener('click', function(){
		alert("this is parent element");
	});
	child1.addEventListener('click', function(){
		alert("this is child element");
	});
	parent2.addEventListener('click', function(){
		alert("this is parent element");
	}, true);
	child2.addEventListener('click', function(){
		alert("this is child element");
	}, true);
</script>

区别

为某元素设定事件触发函数时,可能会觉得addEventListener和on事件的功能差不多,但是,addEventListener除了可以设置元素触发顺序外,还能多次绑定事件,因为 on 事件多次绑定的话会出现覆盖

addEventListener

<div id="div1" style="height:200px;background:#0cc">
Click me
</div>

<script>
	var dib1 = document.getElementById("div1");
	div1.addEventListener('click', function(){
		alert("message1");
	});
	div1.addEventListener('click', function(){
		alert("message2");
	});
</script>
//结果会依次提示“message1”,“message2“。

onClick

div1.onclick = function(){
	alert("message1");
};
div1.onclick = function(){
	alert("message2");
}
//这里就只会提示最后一个“message2”,因为onclick作为对象div1的一个属性,第二次对其进行赋值就会覆盖之前的函数值,这样on事件在某些场合就不适用了。

标签:function,触发,鼠标,区别,对象,用户,onClick,addEventListener
来源: https://blog.csdn.net/qq_46503396/article/details/120385191

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有