网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 js事件处理程序跨浏览器解决方案
内容
    本文实例为大家分享了js事件处理程序跨浏览器解决方案,供大家参考,具体内容如下
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title></title>
    </head>
    <body>
    <div>
    <input type="button" id="button1" value="按钮" />
    </div>
    <script type="text/javascript">
    function show(){
     alert("Hello world!");
    }
    //声明一个对象
    var eventUtil={
    //添加句柄
     addHandler:function(element,type,handler){
    //DOM2级事件处理判断
     if(element.addEventListener){
     element.addEventListener(type,handler,false);
     }else if(element.attachEvent){//IE事件处理判断
     element.attachEvent('on'+type,handler);
     }else{//DOM0级事件判断
     element['on'+type]=handler;
     }
    },
    //删除句柄
    removeHandler:function(element,type,handler){
    //DOM2级事件处理判断
    if(element.removeEventListener){
     elememt.removeEventListener(type,handler,false);
    }else if(element.detachEvent){//IE事件处理判断
     element.detachEvent('on'+type,handler);
    }else{//DOM0级事件判断
     element['on'+type]=null;
     }
    }
    }
    eventUtil.addHandler(button3,'click',show);
    </script>
    </body>
    </html>
    再为大家分享js原生事件处理跨浏览器的代码:
    //跨浏览器的事件处理器添加方式
    var EventUtil = {
      addHandler : function(elem, type, handler){
        if(elem.addEventListener){
          elem.addEventListener(type, handler, false);
        }
        else if(elem.attachEvent){
          elem.attachEvent("on" + type, handler);//添加多个同一类型的handler时,IE方式的规则是最后添加的最先触发
        }
        else{
          if(typeof elem["on" + type] === 'function'){
            var oldHandler = elem["on" + type];
            elem["on" + type] = function(){
              oldHandler();
              handler();
            }
          }
          else{
            elem["on" + type] = handler;//支持添加多个事件处理器
          }
        }
      },
      getEvent : function(event){
        return event ? event : window.event;
      },
      getTarget : function(event){
        return event.target || event.srcElement;
      },
      preventDefault : function(event){
        if(event.preventDefault){
          event.preventDefault();
        }
        else{
          event.returnValue = false;
        }
      },
      removeHandler : function(elem, type, handler){
        if(elem.removeEventListener){
          elem.removeEventListener(type, handler, false);
        }
        else if(elem.detachEvent){
          elem.detachEvent("on" + type, handler);
        }
        else{
          elem["on" + type] = null;//不支持移除单一事件处理器,只能全部移除
        }
      },
      stopPropagation : function(event){
        if(event.stopPropagation){
          event.stopPropagation();
        }
        else{
          event.cancelBubble = true;
        }
      },
      getRelatedTarget : function(event){
        if(event.relatedTarget){
          return event.relatedTarget;
        }
        else if(event.toElement && event.type == "mouseout"){
          return event.toElement;
        }
        else if(event.fromElement && event.type == "mouseover"){
          return event.fromElement;
        }
        else{
          return null;
        }
      },
      /*IE8点击左键和中键都是0;FF无法识别中键;Chrome正常*/
      getButton : function(event){//返回0,1,2 - 左,中,右
        if(document.implementation.hasFeature("MouseEvents", "2.0")){
          return event.button;
        }
        else{
          switch(event.button){
            case 0:case 1:case 3:case 5:case 7:
              return 0;
              break;
            case 2:case 6:
              return 2;
              break;
            case 4:
              return 1;
              break;
            default:
              break;
          }
        }
      },
      /*只能检测keypress事件,返回值等于将要显示的字符编码*/
      /*IE和Chrome只有能显示的字符键才触发,FF其它键也能触发,返回值为0*/
      getCharCode : function(event){
        if(typeof event.charCode == "number"){
          return event.charCode;
        }
        else{
          return event.keyCode;
        }
      }
    };
    以上就是本文的全部内容,希望对大家解决js事件处理程序跨浏览器有所帮助。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/15 1:49:02