zoukankan      html  css  js  c++  java
  • javascript高级程序设计第二版第十二章事件要点总结

    常用的跨浏览器检测方法

    var EventUtil={      //跨浏览器处理程序---创建方法
        addHandler:function(element,type,handler){
            if(element.addEventListener){
                element.addEventListneter(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.removeEventListneter(type,handler,false);
            }else if(element.detachEvent){
                element.detachEvent("on"+type,handler);
            }else{
                element["on"+type]=handler;
            }
        }
        getEvent:function(event){     //跨浏览器事件对象---返回event对象的引用
            return event?event:window.event;
        }
        getTarget:function(event){    //跨浏览器事件对象---返回事件的目标
            return event.target||event.srcElement;
        }
        preventDefault:function(event){    //跨浏览器事件对象---取消默认事件
            if(event.preventDefault){
                event.preventDefault();
            }else{
                event.returnValue=false;
            }
        }
        stoppropagation:function(event){    //跨浏览器事件对象---阻止事件流
            if(event.stoppropagation){
                event.stoppropagation();
            }else{
                event.canceBubble=false;
            }
        }
        getRelatedTarget:function(event){    //跨浏览器获取相关元素
            if(event.relatedTarget){
                return event.relatedTarget; 
            }else if(event.toElement){
                return envent.toElement;
            }else if(event.fromElement){
                return event.fromElement;
            }else{
                return null;
            }
        }
        getButton:function(event){         //鼠标事件的button属性检测
            if(document.implementation.hasFeature("MouseEvent","2.0")){
                return event.button;
            }else{
                switch(event.button){
                    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){    //跨浏览器字符编码---charCode属性检测
            if(typeof event,charCode=="number"){
                return event.charCode;
            }else{
                return event.keyCode;
            }
        }
    }

    事件委托:事件处理程序过多的解决方案,减少内存并且提高性能;
    模拟事件:这个比较复杂,要慢慢研究;

  • 相关阅读:
    我的浏览器和常用扩展
    Win10安装.Net Framework4.7及更高版本
    压缩和解压工具bandizip
    Oracle trunc()函数的用法
    Oracle 中 decode 函数用法
    Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法
    String literal is not properly closed by a double-quote eclipse
    linux 启动 Oracle 实例
    查询当前Oracle数据库的实例
    sqlplus 执行 sql 文件
  • 原文地址:https://www.cnblogs.com/afuge/p/2649728.html
Copyright © 2011-2022 走看看