zoukankan      html  css  js  c++  java
  • js原生设计模式——9外观模式封装

    1、事件处理程序兼容性封装

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>外观模式之事件处理程序浏览器兼容性封装</title>
        
    </head>
    <body>
        <button id="myBtn">事件监听测试按钮</button>
    </body>
    <script type="text/javascript">
    /***
    *此示例是事件处理程序浏览器兼容性封装
    */
    function addEvent(dom,type,fn){
        //对于支持addEventListener()方法的浏览器是标准浏览器,可使用此方法处理事件
        if(dom.addEventListener){
            dom.addEventListener(type,fn,false);//false指事件是以冒泡传播方式传播
        }else if(dom.attachEvent){//对于支持attachEvent()方法的浏览器是IE浏览器,可使用该方法处理IE浏览器中的事件
            dom.attachEvent('on'+type,fn);
        }else{//对于不支持addEventListener()和attachEvent()两个DOM2级方法的,但支持on+事件名(这种写法是DOM0级,太通用,容易被覆盖)的浏览器(都支持),使用该写法
            dom['on'+type] = fn;
        }
    }
    //测试用例:给一个DOM元素同时绑定三个事件监听,点击一次回调函数应该是从上至下依次执行
    var mybtn = document.getElementById('myBtn');//再次提醒:获取DOM元素时,一定要写在html文档的下面才能获取到DOM,否则为空null

    addEvent(mybtn,'click',function(){
        console.log('绑定事件监听1');
    });
    addEvent(myBtn,'click',function(){
        console.log('绑定事件监听2');
    });
    addEvent(myBtn,'click',function(){
        console.log('绑定事件监听3');
    });



    //本例已经通过验证
    </script>
    </html>

    2、获取事件对象、获取事件触发对象以及阻止默认行为的多对象封装

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>获取事件对象、获取事件触发对象以及阻止默认行为的多对象封装</title>
        <script type="text/javascript">
        //获取事件对象
        var getEvent = function(event){
            //标准:event  IE:window.event
            return event || window.event;
        }
        //获取事件触发对象
        var getTarget = function(event){
            var e = getEvent(event);
            //标准:e.target  IE:e.srcElement
            return e.target || e.srcElement;
        }
        //阻止默认行为
        var preventDefault = function(event){
            var e = getEvent(event);
            if (e.preventDefault) {//标准
                e.preventDefault();
            } else{//IE
                e.returnValue = false;
            };
        }


        //本例已经通过验证
        </script>
    </head>
    <body>
        
    </body>
    </html>

  • 相关阅读:
    spring boot的gradle整合日志
    eclipse编译器显示的文件名乱码,活动标签乱码(已解决)
    springboot+mybatis+freemark+oauth开发环境搭建
    jQuery自定义alert,confirm方法及样式
    jQuery生成二维码
    input设置背景透明、placeholder的字体颜色及大小
    给tomcat配置外部资源路径(应用场景:web项目访问图片视频等资源)
    tomcat双击startup.bat启动时闪退
    git从远程分支clone项目到本地,切换分支命令,其他常用命令
    java遍历实体类的属性和值
  • 原文地址:https://www.cnblogs.com/koleyang/p/5028222.html
Copyright © 2011-2022 走看看