首页 > Web开发 > 详细

JS 事件(4)——跨浏览器的事件对象

时间:2016-08-04 22:59:17      阅读:349      评论:0      收藏:0      [点我收藏+]

跨浏览器的事件对象详解

 

封装事件对象

技术分享
 1 var event_util = {
 2     //添加事件
 3     addHandler: function(element, type, handler) {
 4         if(element.addEventListener) {                         
 5             element.addEventListener(type, handler, false);    
 6         } else if(element.attachEvent) {                       
 7             element.attachEvent("on" + type, handler);
 8         } else {
 9             element["on" + type] = handler;                    
10         }
11     },
12     //移除事件
13     removeHandler: function(element, type, handler) {
14         if(element.removeEventListener) {
15             element.removeEventListener(type, handler, false);
16         } else if(element.detachEvent) {
17             element.detachEvent("on" + type, handler);
18         } else {
19             element["on" + type] = null;
20         }
21     },
22     //获取事件对象
23     getEvent: function(event) {
24         return event ? event : window.event;
25     },
26     //获取事件目标
27     getTarget: function(event) {
28         return event.target || event.srcElement;
29     },
30     //阻止事件冒泡
31     stopPropagation: function(event) {
32         if(event.stopPropagation) {
33             event.stopPropagation();
34         } else {
35             event.cancelBubble = true;
36         }
37     },
38     //取消事件默认行为
39     preventDefault: function(event) {
40         if(event.preventDefault) {
41             event.preventDefault();
42         } else {
43             event.returnValue = false;
44         }
45     }
46 };
View Code

将event_util对象另存到一个“事件对象.js”文件中,以方便调用。

 

html代码

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>事件对象示例</title>
 6     </head>
 7     <body>
 8         <div id="box">
 9             <input type="button" id="btn" value="button">
10             <a href="http://www.baidu.com" id="link">百度</a>
11         </div>
12         <script src="事件对象.js"></script>
13     </body>
14 </html>

 

检测事件类型

1 var btn = document.getElementById("btn");
2 event_util.addHandler(btn, "click", function(event) {
3     event = event_util.getEvent(event);
4     alert(event.type);    //"click"
5 });

 

检测事件目标

1 var btn = document.getElementById("btn");
2 event_util.addHandler(btn, "click", function(event) {
3     alert(event_util.getTarget(event));    //object HTMLInputElement
4 });

 

阻止事件冒泡

 1 var btn = document.getElementById("btn");
 2 var div = document.getElementById("box");
 3 event_util.addHandler(btn, "click", function(event) {
 4     alert("You‘ve clicked the button.");
 5     event = event_util.getEvent(event);
 6     event_util.stopPropagation(event);
 7 });
 8 event_util.addHandler(div, "click", function() {
 9     alert("You‘ve clicked the div.");
10 });

 

取消事件默认行为

1 var link = document.getElementById("link");
2 event_util.addHandler(link, "click", function(event) {
3     alert("这个链接不会跳转!");
4     event = event_util.getEvent(event);
5     event_util.preventDefault(event);
6 });

 

注意:在涉及到event对象的操作时,记得传入event参数;一旦传入event参数,记得调用event_util.getEvent()。

 

JS 事件(4)——跨浏览器的事件对象

原文:http://www.cnblogs.com/cc156676/p/5738509.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!