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>

  • 相关阅读:
    React-Native: bios打开VT-x选项
    React-Native:解决真机调试时候Could not get BatchedBridge, make sure your bundle is packaged properly
    node.js异步编程的几种模式
    第29章 电容触摸屏—触摸画板
    第28章 LTDC—液晶显示中英文
    第27章 LTDC/DMA2D—液晶显示
    第26章 FMC—扩展外部SDRAM
    第25章 串行FLASH文件系统FatFs
    第24章 QSPI—读写串行FLASH
    第23章 I2C—读写EEPR
  • 原文地址:https://www.cnblogs.com/koleyang/p/5028222.html
Copyright © 2011-2022 走看看