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>

  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/koleyang/p/5028222.html
Copyright © 2011-2022 走看看