关于ie浏览器和w3c浏览器在事件方面的兼容性问题

来源:互联网 发布:淘宝店铺怎么免费推广 编辑:程序博客网 时间:2024/05/29 06:56

1、事件绑定的四种方式

         在标签中通过属性的方式绑定例:<button onclick="fn()">
         在脚本中通国dom对象的属性绑定例:document.getElementsById("box").onclick=fn;
         通过dom对象特定的方法进行绑定例:document.getElementsById("box").attachEvent("onclick",fn);

         通国script标签绑定:<script for="domID" event="onclick">fn()</script>



2、现代事件绑定的兼容处理
       
function addEvent(obj,type,fn){    //ie相同的事件ie会重复添加    if(obj.attachEvent)         obj.attachEvent("on"+type,fn);    else if(obj.addEventListener)         obj.addEventListener(type,fn);}function unEvent(obj,type,fn){    //只能移除通过事件监听的方式添加的事件参数必须相同    if(obj.detachEvent)       obj.detachEvent("on"+type,fn);    else if(obj.removeEventListener)       obj.removeEventListener(type,fn);}



3、通过传统事件绑定的方式在IE中我们无法通过传参获取event对象,   

function gEvent(ev){      //IE:window.event;  W3C:通过传参获取      return ev||window.event}



      通过现代事件绑定的方式在IE中this指向window
function gThis(e){        //通过event获取触发事件的对象        return e.srcElement||e.target}



4、获取非行内css样式
function gStyle(obj,type){     //IE获取的值是设置的值,非IE获取的是计算后的值     //颜色值W3C会转换为rgb,IE为设置的值     if(obj.currentStyle)          return obj.currentStyle[type];     else if(window.getComputedStyle)          return getComputedStyle(obj,null)[type]}



5、阻止冒泡

function stop(e){    if(e.stopPropagation)            e.stopPropagation();    else             e.cancelBubble=true;}



6、阻止默认行为
function pD(e){     if(e.preventDefault) e.preventDefault();     else                 e.returnValue=false;}



7、鼠标进入和离开相关目标
function gTarget(e){    if(e.srcElement){        if(e.type=="mouseover") return e.fromElement;         else if(e.type=="mouseout") return e.toElement;    }else if(e.relatedTarget)         return e.relatedTarget;}



8、返回鼠标滚轮滚动的距离
function mouseS(e){    //火狐 :DOMMouseScroll   //非火狐:mousewheel    if(e.wheelDelta)   return e.wheelDelta; //非火狐    else               return -e.detail*40   //火狐}



阅读全文
1 0
原创粉丝点击