js 事件对象

什么是事件对象

  1. 就是当你触发一个事件后,对该事件的描述信息
  2. 每个事件都有一个对应的对象来描述这些星系,这个对象就叫事件对象
  3. 只要完成事件绑定,系统会自动生产一个事件对象

事件对象的兼容性问题

  1. 获取事件对象存在的问题:
    标准浏览器通过形参来获取,而IE低版本浏览器不能通过形参来获取,需要通过 window.event 来获取

  2. 语法:
    var e = ev || window.event
    利用逻辑或的短路操作

<body>
    <button>按钮</button>
    <script>
        var btn = document.querySelector('button')
        btn.onclick = function(ev){
            var e = ev || window.event;
            alert(e);
        }
    </script>
</body>

事件对象常用的属性和方法

  1. 鼠标事件对象属性
/*
	button 属性
	0  鼠标左键
  	1  鼠标滚轮
  	2  鼠标右键
*/
document.onmousedown = function(ev){
    var e = ev || window.event;
    alert(e.button);
}

2.获取鼠标当前位置

 <style>            
 *{margin: 0px; padding: 0px;}            
 .div1{  
 	width: 200px; 
	height: 200px; 
	background-color: red; 
	position: absolute; 
	left: 100px; top: 100px;}        
 </style>
 <body>
 	<div class="div1"></div>
 <script>
 /*
	 clientX clientY  原点位置:可视窗口的左上角
	 pageX   pageY    原点位置:整个页面的左上角
	 screenX screenY  原点位置:整个屏幕的左上角(电脑屏幕的左上角)
	 offsetX offsetY  原点位置:被按下的元素节点的左上角
 */
         var div1 = document.querySelector('.div1')
                 div1.onclick = function(ev){
	              var e = ev || window.event;            
	              alert(e.clientX + ", " + e.clientY);//原点:可视窗口的左上角            
	              alert(e.offsetX + ", " + e.offsetY);//原点:被按下的元素节点的左上角
	              alert(e.pageX + ", " + e.pageY)//原点:整个页面的左上角
	              alert(e.screenX + ", " + e.screenY)//原点:电脑屏幕的左上角       
                }
 </script>
 </body>

3.修改键

/*
	 shiftKey     shift键
	 ctrlKey      ctrl键
	 altKey       alt键
	 metaKey      windows键
	 
	 默认是false,按下对应的键的时候才true
	 可以和其他的部分结合使用,完成一些快捷键操作
*/
	//修改键 + 鼠标左键	
<script>
	document.onmousedown = function(ev){                    
	var e = ev || window.event;                    
	var arr = [];                
            if(e.shiftKey){                        
               arr.push("shift");                    
            }
            if(e.ctrlKey){                        
               arr.push("ctrl");                    
            }
            if(e.altKey){                        
               arr.push("alt");                    
            }
            if(e.metaKey){                        
               arr.push("windows");                    
            }                                        
               alert(arr);
	}
</script>

4.键码和字符码

/*
	keyCode 键码  只在keydown下支持(支持全键盘)
	键码返回当前按下键的ASIIC码值,但是统一返回大写字母的ASIIC码值
	
	浏览器兼容问题:
	  IE支持which
	    var which = e.keyCode || e.which
	*/
        //keyCode 键码
	window.onkeydown = function(ev){
	     var e = ev || window.event;
	     var which = e.keyCode || e.which;
	     alert(which)
	}

/*
	charCode  字符码  只在keypress下支持(只支持字符键)
	返回的当前按下的这个键对应的ASIIC码,区分大小写
	
	浏览器兼容问题:
	      IE支持which
	      var which = e.charCode  || e.which
	*/

	//charCode  字符码
	window.onkeypress= function(ev){                    
	     var e = ev || window.event;                                                      
	     var which = e.charCode  || e.which;
             alert(which);                
         }

5.target

/*
	触发对象/目标对象
	事件由谁而起的
	e.target (IE低版本浏览器不兼容)
	IE使用 window.event.srcElement
*/
<body>    
	<ul class="ul1">        
	   <li>111</li>        
	   <li>222</li>        
	   <li>            
	      <div>333</div>        
	   </li>        
	   <span>444</span>    
	</ul>

<script>            
    var ul1= document.querySelector(".ul1");            
    ul1.onclick = function(ev){                
    var e = ev || window.event;
    //触发对象                
    var target = e.target || window.event.srcElement;
    alert(target.innerHTML + ", " + target.tagName);            
    }    
</script>
</body>
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值