• 事件兼容问题


      

      不同的浏览器获取事件源的方式是不同的,这源于浏览器在设计之初不同的浏览器对于事件的属性定义不同,下面让我们看一看不同浏览器对于多种同一事件的兼容问题。

    1.事件处理

      不同浏览器的事件源属性是不相同的为了解决这一问题,我们在书写方法时,会兼容性书写获取事件源的方法。

    键盘事件

    fuction  keyDown(ev){
      var e = ev || window.event;
      var key = e.target || e.srcElement;        
      if(key==keyCode){
        //......
        }  
    }
    

    鼠标事件

    function mouse(ev){
        var e =ev||window.event;
        //获取事件源的坐标,
        var key = e.target||e.srcElement
        //或是鼠标的键
    }
    

    2.事件监听

    在用事件监听方法給对象绑定事件时,由于不同浏览器的监听方法不同,会做一下处理

    funtion addEvent(ele,type,cb){
       return  ele.attachEvent?ele.attachEvent("on"+type,cb):ele.addEventListener(type,cb);
    }
    

     給对象移除事件也存在兼容问题

    function removeEvent(ele,type,cb){
        return ele.detachEvent? ele.detachEvent(type,cb):ele.removeEvent("on"+type,cb);
    }

    3.事件冒泡

    在html盒子里,触发里面的事件时会穿透到父级身上,这种现象叫事件冒泡,为了解决这一问题,要阻止事件冒泡

        function stopBubble(e){
            return window.stopPropagation ? e.stopPropagation():e.cancelBubble = true;
        }
    

     在IE浏览器里事件冒泡并不是方法,而是属性。

    4.事件委托

    obj.on+事件 = function(eve){
            var e= eve || window.event;
            var tar = e.target || e.srcElement;
            //判断当前事件源,与其他对象是否满足条件
            //绑定事件
        }
    

      

    浏览器中兼容问题有很多,因为浏览器的内核并不一样,厂家也不同,在编写这些浏览器时不同的设计师思维是不同的,编写的语言也不同。对于程序员来说,以较少的代码解决较多的问题,是我们程序员必需的基本素质

  • 相关阅读:
    poj2942 点-双联通+二分图染色
    poj1523割顶-点双联通
    poj3694 边-双连通分量+lca
    poj3177边-双连通分量
    poj3352 边-双联通分量
    Codeforces Round #377 (Div. 2) F
    Educational Codeforces Round 30D. Merge Sort
    洛谷p3369 treap
    hdu3572线性欧拉筛
    HYSBZ
  • 原文地址:https://www.cnblogs.com/bigharbour/p/11934514.html
Copyright © 2020-2023  润新知