zoukankan      html  css  js  c++  java
  • JavaScript事件基础知识总结【思维导图】

     

    var EventUtil = {
        //注册事件
        addHandler: function(element, type, handler){
            if (element.addEventListener){
                element.addEventListener(type, handler, false);
            } else if (element.attachEvent){
                element.attachEvent("on" + type, handler);
            } else {
                element["on" + type] = handler;
            }
        },
     
        //移除事件
        removeHandler: function(element, type, handler){
            if (element.removeEventListener){
                element.removeEventListener(type, handler, false);
            } else if (element.detachEvent){
                element.detachEvent("on" + type, handler);
            } else {
                element["on" + type] = null;
            }
        },
     
        //获取事件
        getEvent: function(event){
            return event ? event : window.event;
        },
     
        //获取事件名称
        getTarget: function(event){
            return event.target || event.srcElement;
        },
        
        //获取鼠标键
        getButton: function(event){
            //DOM2中检测是否有MouseEvents模块
            if (document.implementation.hasFeature("MouseEvents", "2.0")){
                return event.button;
                // var k = event.button;
                //     switch(k){
                //         case 0:
                //             return "0:表示左键";
                //         case 1:
                //             return "1:表示中键";
                //         case 2:
                //             return "2:表示右键";
                //     }
                //IE6,7,8  左键:1,中键:4,右键:2;
                //Chrome,FF,IE9+   左键:0,中键:1,右键:2;
            } else {
                switch(event.button){   //IE下
                    case 0:
                    case 1:             //左键
                    case 3:             //左右键
                    case 5:             //左中键
                    case 7:             //左右中
                        return 0;       //左键
                    case 2:             //右键
                    case 6:             //右中
                        return 2;       //右键
                    case 4: return 1;   //中键
                }
            }
        },
        
        //获得按键编码值
        getCharCode: function(event){
            if (typeof event.charCode == "number"){
                return event.charCode;
            } else {
                return event.keyCode;
            }
        },
        
        /*event对象的relatedTarget属性提供了相关元素的信息,这个属性只对于mouseover和mouseout事件才包含值;
        *对于其他事件,这个属性的值是null。
        *IE不支持relatedTarget属性,但提供了保存着同样信息的不同属性。
        *在mouseover事件触发时,IE的fromElement属性中保存率相关元素;
        *在mouseout事件触发时,IE的toElement属性中保存着相关元素。
        */
        getRelatedTarget: function(event){
            if (event.relatedTarget){
                return event.relatedTarget;
            } else if (event.toElement){
                return event.toElement;
            } else if (event.fromElement){
                return event.fromElement;
            } else {
                return null;
            }
        
        },
        
        //获取鼠标滚轮mousewheel事件
        getWheelDelta: function(event){
            if (event.wheelDelta){
                return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
            } else {
                return -event.detail * 40;
            }
        },
        
        //取消事件的默认行为,如果cancelable是true,则可以使用这个方法;
        //如:点击超链接时阻止其访问herf属性实现跳转
        preventDefault: function(event){
            if (event.preventDefault){
                event.preventDefault();
            } else {
                event.returnValue = false;
            }
        },
        
        //取消事件的进一步捕获或冒泡。如果bubbles为true则可以使用这个方法;
        stopPropagation: function(event){
            if (event.stopPropagation){
                event.stopPropagation();
            } else {
                event.cancelBubble = true;
            }
        },
     
        //获取剪切板文本
        getClipboardText: function(event){
            var clipboardData =  (event.clipboardData || window.clipboardData);
            return clipboardData.getData("text");
        },
     
        //设置剪切板文本
        setClipboardText: function(event, value){
            if (event.clipboardData){
                event.clipboardData.setData("text/plain", value);
            } else if (window.clipboardData){
                window.clipboardData.setData("text", value);
            }
        }
     
    };

     

     

  • 相关阅读:
    URAL 1998 The old Padawan 二分
    URAL 1997 Those are not the droids you're looking for 二分图最大匹配
    URAL 1995 Illegal spices 贪心构造
    URAL 1993 This cheeseburger you don't need 模拟题
    URAL 1992 CVS
    URAL 1991 The battle near the swamp 水题
    Codeforces Beta Round #92 (Div. 1 Only) A. Prime Permutation 暴力
    Codeforces Beta Round #7 D. Palindrome Degree hash
    Codeforces Beta Round #7 C. Line Exgcd
    Codeforces Beta Round #7 B. Memory Manager 模拟题
  • 原文地址:https://www.cnblogs.com/sdream/p/5691170.html
Copyright © 2011-2022 走看看