继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

简单登录效果-兼容性事件处理程序

小谢星
关注TA
已关注
手记 10
粉丝 16
获赞 148

eventUtil.js(封装好的事件处理程序类)

//使用变量,类似JSON类型的js对象方式进行事件处理程序的相关逻辑封装,主要解决了浏览器兼容性问题
//单独写进js中,便于html多次进行调运
var eventUtil = {
    //添加事件
    addEventHandle:function(element,eventType,fn){
        if(element.addEventListener){//非IE
            element.addEventListener(eventType,fn,false);
        }else if(element.attachEvent){//IE
            element.attachEvent('on'+eventType,fn);//这里拼接上'on',调运的时候不要加on,使用click等。
        }else{//不支持DOM2级,使用DOM0级方式
            element['on'+eventType] = fn;//这里使用[]方式实现对象的属性添加,相当于.的作用
        }
    },
    //删除事件
    removeEventHandle:function(element,eventType,fn){
        if(element.removeEventListener){//非IE,不带'on'
            element.removeEventListener(eventType,fn,false);//这里传入fn,是因为DOM2级或DOM0级都可以一次给一个元素的同一个事件绑定多个程序,所以需要传入具体的程序fn进行删除
        }else if(element.detachEvent){//IE,带'on'
            element.detachEvent('on'+eventType,fn);
        }else{//不支持DOM2级,使用DOM0级方式
            element['on'+eventType] = fn;
        }

    },
    //获取事件对象
    getEvent:function(event){
       return event?event:window.event;
    },
    //获取事件类型
    getType:function(event){
        return event.type;
    },
    //获取执行事件的目标元素
    getTarget:function(event){
        return event.target||event.srcElement;
    },
    //禁用默认行为
    preventDefault:function(event){
        if(event.preventDefault){
            event.preventDefault();//非IE
        }else{
            event.returnValue = false;//针对IE
        }

    },
    //阻止传播冒泡
    stopPrapagation:function(event){
        if(event.stopPrapagation){
            event.stopPrapagation();//非IE
        }else{
            event.cancelBubble = true;//针对IE
        }
    }
}

close.png
图片描述
myDemo7.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编程练习7-实现登陆样式(测试事件处理程序)</title>
    <style>
         *{margin:0;padding:0;}
         .head{font-size:12px;padding:6px 0 0 10px;}
         #login_box{width:300px;height:150px;background:#eee;
         border:1px solid #ccc;position:absolute;left:50%;top:50%;margin-left:-150px;margin-top:-75px;display:none;}
         #login_box p{height:20px;border-bottom:1px solid #ccc;font-size:12px;padding:6px 0 0 5px;font-weight:bold;}
         #close{width:14px;height:14px;background:url(close.png) no-repeat;position:absolute;right:4px;top:6px;}
        </style>
        <script src='eventUtil.js'></script>
        <script>
          window.onload=function(){
            var login_btn=document.getElementById('login'),
                login_box=document.getElementById('login_box'),
                close=document.getElementById('close');
            // 封装添加事件监听程序
            function addEvent(ele,type,hander){
               eventUtil.addEventHandle(ele,type,hander);
            }
            // 显示登录层函数
            function showLogin(){
                // 执行代码
                login_box.style.display = 'block';
            }
            // 隐藏登录层函数
            function hideLogin(){
              // 执行代码
              login_box.style.display = 'none';
            }
            //点击登录按钮显示登录层 
            addEvent(login_btn,'click',showLogin);
            //点击关闭按钮隐藏登录层
            addEvent(close,'click',hideLogin);
          }
        </script>
    </head>
    <body>
        <div class="head">亲,您好!<input type="button" value="登 录" id="login"></div>
        <div id="login_box">
            <p>用户登录</p><span id="close"></span>
        </div>
    <div style="width:0px;height:0px;position:absolute;top:-999px;left:-999px;"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="erroralert" width="1px" height="1px"><param name="AllowScriptAccess" value="always"/><param name="movie" value="http://tongji.baidu.com/logstat.swf"/><embed name="erroralert" width="1px" height="1px" allowscriptaccess="always" align="middle" src="http://tongji.baidu.com/logstat.swf" type="application/x-shockwave-flash"/></object></div></body>
</html>
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP