javascript---事件对象

本文详细介绍了事件对象event的属性和方法,如获取鼠标位置、屏幕位置等,并讲解了如何兼容不同浏览器获取event对象。此外,还深入探讨了事件流的概念,包括冒泡和捕获两种模式,以及如何取消事件冒泡。

事件对象event

  如果是事件处理函数绑定的函数,浏览器会默认传递一个参数,event对象。而这个对象会根据触发的事件判断是鼠标事件还是键盘事件

 

//鼠标事件

1     document.onclick=function(evt){
2             alert(evt);        //键盘事件
3         }

//键盘事件

1     document.onkeydown=function(evt){
2             alert(evt);        //键盘事件
3         }

 

由于IE浏览器和W3C浏览器获取event对象有不兼容的地方,所以需要兼容方法:

1 var e=evt||window.event;

 


 

event对象的属性和方法:

1.可视区坐标(浏览器)

clientX   clientY

1     document.onclick=function(evt){
2             var e=evt||window.event;
3             alert(e.clientX+','+e.clientY);
4         }

 

2.离屏幕的位置

screenX   screenY

1     document.onclick=function(evt){
2             var e=evt||window.event;
3             alert(e.screenX+','+e.screenY);
4         }

 

3.获取对应标签名

target

兼容IE写法:

1     function getTarget(evt){
2                 var e=evt||window.event;
3                 return e.target||e.srcElement;
4             }

 


事件流:

  事件流包括两种模式:冒泡和捕获,现在浏览器默认情况下都是冒泡模型

 

冒泡:从里往外逐个触发

捕获:从外往里逐个触发

 

 1     //冒泡
 2             document.onclick=function(){
 3                 alert('document');
 4             }
 5             document.documentElement.onclick=function(){
 6                 alert('html');
 7             }
 8             document.body.onclick=function(){
 9                 alert('body');
10             }
11             document.getElementById('box').onclick=function(){
12                 alert('box');
13             }

即当点击box的时候,还会弹出body,html和document,这就是冒泡,我们有时候需要阻止冒泡

 

取消冒泡:

 e.stopPropagation();  //w3c,取消冒泡
   e.cancelBubble=true;  //IE,取消冒泡

1         //兼容
2             function setStop(evt){
3                 var e=evt||window.event;
4                 (typeof e.stopPropagation=='function')?e.stopPropagation():e.cancelBubble=true;
5             }    

 

转载于:https://www.cnblogs.com/GacentJohn/p/5331262.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值