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>

js原生设计模式——9外观模式封装的更多相关文章

  1. js原生设计模式——9外观模式封装2(小型代码库YJ)

    <script type="text/javascript">    //小型代码库YJ封装    var YJ = {        //根据id获取元素       ...

  2. js原生设计模式——7原型模式之真正的原型模式——对象复制封装

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)

    桥接模式之多元化类之间的实例化调用实例 <!DOCTYPE html><html lang="en"><head>    <meta ch ...

  4. js原生设计模式——7原型模式之new+call(this)组合应用再探讨实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. js设计模式——2.外观模式

    js设计模式——2.外观模式

  6. 每天一个设计模式-2 外观模式(Facade)

    每天一个设计模式-2  外观模式(Facade) 1.生活中的示例 客户想要购买一台电脑,一般有两种方法: 1.自己DIY,客户需要知道组成电脑的所有电子器件,并且需要熟悉那些配件,对客户要求较高. ...

  7. 乐在其中设计模式(C#) - 外观模式(Facade Pattern)

    原文:乐在其中设计模式(C#) - 外观模式(Facade Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 外观模式(Facade Pattern) 作者:webabcd 介绍 ...

  8. 再起航,我的学习笔记之JavaScript设计模式11(外观模式)

    经过一段时间的学习与分享,我们对创建型设计模式已经有了一定的认识,未来的一段时间里我们将展开新的篇章,开始迈入结构性设计模式的学习. 结构性设计模式与创建型设计模式不同,结构性设计模式更偏向于关注如何 ...

  9. 北风设计模式课程---外观模式(Facade)总结

    北风设计模式课程---外观模式(Facade)总结 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备 ...

随机推荐

  1. UIColor -colorWithAlphaComponent

    view.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.7]; //颜色透明度

  2. 触发器(基本的SR触发器、同步触发器、D触发器)

    一.能够存储1位二值信号的基本单元电路统称为触发器(Filp-Flop) 触发器是构成时序逻辑电路的基本逻辑部件.它有两个稳定状态:“0”和“1”.在不同的输入情况下,它可以被置0状态或1状态,当输入 ...

  3. 阿里笔试js题

    有一个数组,其中保存的都是小写英文字符串,现在要把它按照除了第一个字母外的字符的字典顺序(字典顺序就是按首字母从a-z顺序排列,如果首字母相同则按第二个字母……)排序,请编写代码: 例:[" ...

  4. FatMouse's Speed 基础DP

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. column name is keyword from

    mysql: select tablename.from from tablename; postgresql: select "from" from tablename; sql ...

  6. codeforce 611A New Year and Days

    #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using ...

  7. WPF教程:依赖属性

    一.什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值.依赖属性可支持WPF中的样式设置.数据绑定.继承.动画及默认值. 将所有的属性都设置为依赖属性并不总是正确的解决 ...

  8. HDU 3874 Necklace

    莫队算法. #include<cstdio> #include<cstring> #include<cmath> #include<queue> #in ...

  9. ip识别运用

    tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0-1 ...

  10. 如何使用UDP进行跨网段广播(转)

    源:如何使用UDP进行跨网段广播 广播域首先我们来了解一下广播域的概念.广播域是网络中能接收任一台主机发出的广播帧的所有主机集合.也就是说,如果广播域内的其中一台主机发出一个广播帧,同一广播域内所有的 ...