事件对象兼容浏览器

1 篇文章 0 订阅

1.鼠标事件对象的button属性(了解)

button 控制用户操作的按键
左键 : 0
滚轮 : 1
右键 :  2
ie下的数据
左键 :1
滚轮 :4
右键 :  2
案例
跨浏览器兼容事件对象button的属性
function getButton(evt){ //放在事件处理程序函数使用
    var e = evt || event;
    if( evt ){
        return evt.button;
    }else if( window.event ){
        swhitch( e.button ){
            case 1 : return 0;
            case 4 : return 1;
            case 2 : return 2;
        }
    }
}
    


2.事件流
当某个事件执行时,从子元素向父元素触发 或 从父元素向子元素触发 称为事件流
事件流的两种模式
事件冒泡:子元素向父元素触发
        概念:当某个事件触发时,同样的事件会向父元素触发,这个过程就称为事件冒泡。不是所有事件都会产生冒泡问题,如onblur onfocus onload
        阻止冒泡:
            现代浏览器:e.stopPropagation();
            ie浏览器:e.cancelBubble = true;
            兼容:
                if( e.stopPropagation ){
                    e.stopPropagation();
                }else{
                    e.cancelBubble = true;
                }
                或 : e.stopPropagation ? e.stopPropagation() :  e.cancelBubble = true;

//跨浏览器阻止事件冒泡行为
function stopPropa(e){
     var e = e || event ;
     if(e.stopPropagation){//高版本浏览器使用
          return e.stopPropagation();
     }else{//低版本ie浏览器使用
          return e.cancelBubble = true;
     }
}

事件捕获: 从父元素向子元素触发
冒泡案例:
    弹出个人资料


3.阻止事件默认行为
现代浏览器:  e.preventDefault();
ie:returnValue = false;
兼容:e.preventDefault ? e.preventDefault() : e.returnValue = false;

事件执行函数中加 return false阻止默认行为,所有浏览器都兼容

//跨浏览器取消浏览器默认行为
function stopDefault(e){
     var e = e || event ;
     if(e.preventDefault){//高版本浏览器使用
          return e.preventDefault();
     }else{//低版本ie浏览器使用
          return e.returnValue = false;
     }
}

4.事件监听addEventListener() 高版本浏览器
事件监听的好处:
    1.可以为一个元素绑定多次同一个事件
    2.程序员可以使用事件监听方式 确定 触发的事件过程是冒泡还是捕获
事件源.addEventListener("没有on的事件",function(){},true/false);默认false冒泡,true为捕获
    如果同一元素既有捕获监听,又有冒泡监听,优先执行捕获。

ie事件监听:document.attachEvent("on+事件",function(){});没有第三个参数 没有捕获或冒泡的区分

兼容事件监听函数
    
function addEvent( obj , type , callBack ){
    if( obj.addEventListener ){
        obj.addEventListener( type , callBack );
    }else{
        obj.attachEvent( "on" + type , callBack );
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值