跨浏览器事件处理程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>跨浏览器事件处理程序</title>
    <!-- 针对IE8及以下版本 -->
</head>
<body>
    <script>
        //添加事件
        function addHandler(element,type,handler){
            //element:事件对象
            //type:事件类型
            //handler:事件句柄
            if (element.addEventListener){  //判断浏览器是否支持该语句(chrome/opera/IE9支持)
                element.addEventListener(type,handler,false);
            }else if(element.attachEvent){  //判断浏览器是否支持该语句(IE8及以下版本支持)
                element.attachEvent("on"+type,handler);
            }else{
                element["on"+type]=handler;//以上两种都不支持时,执行DOM0级事件
            }
        }
        //移除事件
        function removeHandler(element,type,handler){
            if (element.removeEventListener){     //判断浏览器是否支持该语句(chrome/opera/IE9支持)
                element.removeEventListener(type,handler,false);
            }else if(element.detachEvent){      //判断浏览器是否支持该语句(IE8及以下版本支持)
                element.detachEvent("on"+type,handler);
            }else{
                element["on"+type]=handler;//以上两种都不支持时,执行DOM0级事件
            }
        }
    </script>
    <!-- 测试效果 -->
    <button id="btn">点击</button><!-- 创建按钮 -->
    <script>
        var btn=document.getElementById("btn");//获取按钮
        //事件句柄
        var tan=function (){
            alert("弹框");
        }
        addHandler(btn,"click",tan);//调用添加事件函数
        removeHandler(btn,"click",tan);//调用移除事件函数
    </script>
</body>
</html>

相关推荐