免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1496 | 回复: 0
打印 上一主题 下一主题

Event [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-29 17:26 |只看该作者 |倒序浏览
Event


Js代码  
1.// written by Dean Edwards, 2005   
2.// with input from Tino Zijdel, Matthias Miller, Diego Perini   
3.  
4.// http://dean.edwards.name/weblog/2005/10/add-event/   
5.  
6.function addEvent(element, type, handler) {   
7.    if (element.addEventListener) {   
8.        element.addEventListener(type, handler, false);   
9.    } else {   
10.        // assign each event handler a unique ID   
11.        if (!handler.$$guid) handler.$$guid = addEvent.guid++;   
12.        // create a hash table of event types for the element   
13.        if (!element.events) element.events = {};   
14.        // create a hash table of event handlers for each element/event pair   
15.        var handlers = element.events[type];   
16.        if (!handlers) {   
17.            handlers = element.events[type] = {};   
18.            // store the existing event handler (if there is one)   
19.            if (element["on" + type]) {   
20.                handlers[0] = element["on" + type];   
21.            }   
22.        }   
23.        // store the event handler in the hash table   
24.        handlers[handler.$$guid] = handler;   
25.        // assign a global event handler to do all the work   
26.        element["on" + type] = handleEvent;   
27.    }   
28.};   
29.// a counter used to create unique IDs   
30.addEvent.guid = 1;   
31.  
32.function removeEvent(element, type, handler) {   
33.    if (element.removeEventListener) {   
34.        element.removeEventListener(type, handler, false);   
35.    } else {   
36.        // delete the event handler from the hash table   
37.        if (element.events && element.events[type]) {   
38.            delete element.events[type][handler.$$guid];   
39.        }   
40.    }   
41.};   
42.  
43.function handleEvent(event) {   
44.    var returnValue = true;   
45.    // grab the event object (IE uses a global event object)   
46.    event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);   
47.    // get a reference to the hash table of event handlers   
48.    var handlers = this.events[event.type];   
49.    // execute each event handler   
50.    for (var i in handlers) {   
51.        this.$$handleEvent = handlers;   
52.        if (this.$$handleEvent(event) === false) {   
53.            returnValue = false;   
54.        }   
55.    }   
56.    return returnValue;   
57.};   
58.  
59.function fixEvent(event) {   
60.    // add W3C standard event methods   
61.    event.preventDefault = fixEvent.preventDefault;   
62.    event.stopPropagation = fixEvent.stopPropagation;   
63.    return event;   
64.};   
65.fixEvent.preventDefault = function() {   
66.    this.returnValue = false;   
67.};   
68.fixEvent.stopPropagation = function() {   
69.    this.cancelBubble = true;   
70.};  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP