zoukankan      html  css  js  c++  java
  • javascript——事件处理

    <script type="text/javascript">
    
        function EventUtil() {
            var _self = this;
            ///添加事件
            var addEvent = (function () {
                if (document.addEventListener) {
                    return function (el, type, fn) {
                        el.addEventListener(type, fn, false);
                    }
                } else {
                    return function (el, type, fn) {
                        el.attachEvent("on" + type, function () {
                            return fn.call(el, window.event);
                        });
                    }
                }
            })();
    
            ///添加属性改变事件
            var addPropertyChangeEvent = function (obj, fn) {
                if (window.ActiveXObject) {
                    obj.onpropertychange = fn;
                } else {
                    obj.addEventListener("input", fn, false);
                }
            }
    
            //移除事件
            var removeEvent = function (obj, type, fn) {
                if (obj.removeEventListener) {
                    obj.removeEventListener(type, fn, false);
                } else if (obj.detachEvent) {
                    obj.detachEvent("on" + type, obj["on" + type + fn]);
                    obj["on" + type + fn] = null;
                }
            }
    
            //加载事件
            var loadEvent = function (fn) {
                var oldonload = window.onload;
                if (typeof oldonload != "function") {
                    window.onload = fn;
                } else {
                    window.onload = function () {
                        oldonload();
                        fn();
                    }
                }
            }
    
            //阻止事件
            var stopEvent = function (e) {
                e = e || window.event;
                if (e.preventDefault) {
                    e.preventDefault();
                    e.stopPropagation();
                } else {
                    e.returnValue = false;
                    e.cancelBubble = true;
                }
            }
    
            //如果仅仅是阻止事件冒泡
            var stopPropagation = function (e) {
                e = e || window.event;
                if (!+"v1") {
                    e.cancelBubble = true;
                } else {
                    e.stopPropagation();
                }
            }
    
            //取得事件源对象
            var getEvent1 = function (e) {
                e = e || window.event;
                var obj = e.srcElement ? e.srcElement : e.target;
                return obj;
            }
            //取得事件源对象
            var getEvent2 = function (e) {
                if (window.event) return window.event;
                var c = getEvent2.caller;
                while (c.caller) {
                    c = c.caller;
                }
                return c.arguments[0];
            }
    
            //或者这个功能更强大
            var getEvent3 = function (e) {
                var e = e || window.event;
                if (!e) {
                    var c = this.getEvent3.caller;
                    while (c) {
                        e = c.arguments[0];
                        if (e && (Event == e.constructor || MouseEvent == e.constructor)) {
                            break;
                        }
                        c = c.caller;
                    }
                }
                var target = e.srcElement ? e.srcElement : e.target,
                        currentN = target.nodeName.toLowerCase(),
                        parentN = target.parentNode.nodeName.toLowerCase(),
                        grandN = target.parentNode.parentNode.nodeName.toLowerCase();
                return [e, target, currentN, parentN, grandN];
            }
    
    
            _self.addEvent = addEvent;
            _self.addPropertyChangeEvent = addPropertyChangeEvent;
            _self.removeEvent = removeEvent;
            _self.loadEvent = loadEvent;
            _self.stopEvent = stopEvent;
            _self.stopPropagation = stopPropagation;
            _self.getEvent1 = getEvent1;
            _self.getEvent2 = getEvent2;
            _self.getEvent3 = getEvent3;
        }
        var eventUtil = new EventUtil();
        eventUtil.loadEvent(function () {
            eventUtil.addEvent(document, "click", function (e) {
                alert(eventUtil.getEvent3(e));
            });
    
            eventUtil.addPropertyChangeEvent(document,function(e){
                alert(eventUtil.getEvent3(e));
            });
        });
    
    </script>
    View Code
  • 相关阅读:
    Ajax基础:3.Json
    Head First Design Patterns State Pattern
    Head First Design Patterns Template Method Pattern
    Articles For CSS Related
    Head First Design Patterns Decorator Pattern
    代码审查工具
    How To Be More Active In A Group
    Head First Design Patterns Factory Method Pattern
    Head First Design Patterns Composite Pattern
    Tech Articles
  • 原文地址:https://www.cnblogs.com/goesby/p/4192018.html
Copyright © 2011-2022 走看看