• js绑定事件方法:addEventListener与attachEvent的不同浏览器的兼容性写法


    js的事件绑定方法中,ie仅仅支持attachEvent,而FF和Chrome仅仅支持addEventListener,所以就必须为这两个方法做兼容处理,原理是先推断attachEvent仅仅否为真(存在),假设为真则用attachEvent()方法。否则的话就用addEventListener()。
    另外,为了避免每次绑定事件时都要做推断。能够封装一个函数myAddEvent(obj,ev,fn){}。
    代码例如以下:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>绑定</title>
        <script>
            window.onload = function()
            {
                var oBtn = document.getElementById("btn1");
                //IE  attachEvent(事件名。函数),此方法仅仅有ie支持,FF和Chrome均不支持
                /*oBtn.attachEvent("onclick",function()
                {
                    alert("a");
                });
                oBtn.attachEvent("onclick",function()
                {
                    alert("b");
                })*/
                //FF和Chrome  addEventListener(事件名。函数),此方法ie不支持
                /*oBtn.addEventListener("click",function()
                {
                    alert("a");
                });
                oBtn.addEventListener("click",function()
                {
                    alert("b");
                })*/
                //兼容写法:if/else推断
                /*if(oBtn.attachEvent)
                {
                    oBtn.attachEvent("onclick",function()
                    {
                        alert("a");
                    });
                    oBtn.attachEvent("onclick",function()
                    {
                        alert("b");
                    })
                }
                else
                {
                    oBtn.addEventListener("click",function()
                    {
                        alert("a");
                    },false);
                    oBtn.addEventListener("click",function()
                    {
                        alert("b");
                    },false)
                }*/
                //另外,还能够把这个兼容写法封装成一个函数,这样就不用每次绑定事件时都要推断一下
                function myAddEvent(obj,ev,fn)    //obj为要绑定事件的元素。ev为要绑定的事件,fn为绑定事件的函数
                {
                    if(obj.attachEvent)
                    {
                        obj.attachEvent("on" + ev,fn);
                    }
                    else
                    {
                        obj.addEventListener(ev,fn,false);
                    }
                }
                myAddEvent(oBtn,"click",function()
                {
                    alert("a");
                })
                myAddEvent(oBtn,"click",function()
                {
                    alert("b");
                })
            }
        </script>
    </head>
    <body>
    <input id="btn1" type="button" value="按钮"/>
    </body>
    </html>
  • 相关阅读:
    NOI2015字符串游戏
    mathlover和她的粉丝团 西安电子科技大学第二届程序设计新生赛(同步赛)
    qko的烦恼 牛客练习赛34
    little w and Sum 牛客练习赛34
    little w and Soda 牛客练习赛34
    编辑器的选择 西安电子科技大学第二届程序设计新生赛(同步赛)
    or2?Scum! 西安电子科技大学第二届程序设计新生赛(同步赛)
    tokitsukaze and RPG 牛客练习赛33
    巴啦啦能量 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)
    CentOSmini安装gcc8.2
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/6920909.html
Copyright © 2020-2023  润新知