• 事件处理程序和事件对象总结


    和require.js没关系,只是最近看了拿来练练手~~

    1.html(引用require.js模块)

    <!DOCTYPE html>
    <html>
    <head>
        <style type="text/css">
            #div{
                background-color: yellow;
                width:200px;
                height:200px;
                opacity: 0.5; 
    
            }
            #a{
                display: block;
                background-color: green;
                width:100px;
                height:100px;
            }
        </style>
    </head>
    <body>
        <div id="div">
            <a id="a" href="http://site.baidu.com/"></a>
        </div>
    <script type="text/javascript" src="require.js" data-main="main.js"></script>
    </body>
    </html>

    2.main.js(程序入口文件)

    require(['event'],function(Mod){
    var div=document.getElementById('div');
    var a=document.getElementById('a');
    var Mod=new Mod.O();
    Mod.addHandler(a,'click',hander1);
    function hander1(e){
    Mod.preventDefault(e);
    Mod.stopPropagation(e);
    alert('a');
    }
    Mod.addHandler(div,'click',hander2);
    function hander2(e){
    
    alert('div');
    }
    });

    3.event.js(跨浏览器的事件处理程序和事件对象)

    define(function(){
        function O(){
        }
        O.prototype={
    // 添加句柄
    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;
    },
    getType:function(event){
        return event.type;
    },
    getElement: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.cancelBubble=true;
        }
    }
    };
    
    return {O:O};
    });

     

  • 相关阅读:
    server-conf-PPTConf
    client-autoReport-ppt
    client-autoReport-common
    浏览器书签导出
    微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决
    Kettle 4.4.0 通过 Java 代码 输出日志到表
    spring tx:advice事务配置
    Spring异常捕获而且回滚事务的方法
    移动端服务器i-jetty下载编译安装及问题解决系列
    I-Jetty部署war包到安卓手机
  • 原文地址:https://www.cnblogs.com/taoxiaodan/p/6159577.html
Copyright © 2020-2023  润新知