zoukankan      html  css  js  c++  java
  • javascript IE事件处理及跨浏览器事件处理程序

    一、javascript事件处理中

          addEventListener/removeEventListener 用于绑定事件和解除事件,但大多用于chrome/火狐/IE9这些比较高级的浏览器中,IE8及以下就没有效果。

         主要用法:element.addEventListener(type,event,boolean); type:绑定的一些js事件如鼠标事件等;event:执行的动作我理解为一个函数;布尔值:我理解为事件开始执行的地方,默认值为false。

         值得注意的是:removeEventListener 解绑一个事件,解除的是addEventListener所绑定的事件,也就是说这两个方法里面的参数要一致,就是event要是一样的函数,匿名函数容易出错可以先给函数赋值;

          attachEvent/detachEvent也是用于绑定事件和解除事件,但是这两个只有在IE8及及以下的浏览器中才能使用。

         主要用法:element.attachEvent(type,event,boolean); type:绑定的一些js事件如鼠标事件等要加“on”不知道为什么;event:执行的动作我理解为一个函数;

    二、IE8始终还算是主流浏览器,要考虑到兼容,但不能每次都写两个代码,所整合成一个封装起来以便使用

    <button type="button" id="btntest">just a test</button>
    
    <script type="text/javascript">
    var EventUtil={ addhandler:function(element,type,events){ if(element.addEventListener){ //添加事件 element.addEventListener(type,events,false); //如果不是IE8及以下的浏览器则执行 }else if(element.attachEvent){ element.attachEvent("on"+type,events); //如果是IE8则执行 }else{ element["on"+type]=null; } }, removehandler:function(element,type,event){ if(element.removeEventListener){ //移除事件 element.removeEventListener(type,events,false); }else if(element.attachEvent){ element.detachEvent("on"+type,events); }else{ element["on"+type]=null; } } };
    var btn=document.getElementById('btntest'); //测试用例
    var handler=function(){ //命名函数 alert("just differ browser test!"); }; EventUtil.addhandler(btn,"click",handler); //调用 </script>

     三、javascript中event对象属性和方法

           function(event){}  event我理解为一个事件参数,所以有事件的属性和方法

          event.target/currentTarget     target:点击的目标;

                                                        IE8及以下使用:srcElement        

                                                       currentTarget:事件绑定的目标;

         event.preventDefault:阻止默认行为;IE8及以下使用:event.returnValue=false

         event.stopPropagation :阻止事件的冒泡或者捕获;IE8及以下使用:event.canaelBubble=true

         event.clientY、pageY、screenY

                                                          clientY:指浏览器顶部底边到鼠标的位置,不计算滚动轴的距离

                                                          pageY:指浏览器顶部底边到鼠标的位置,计算滚动轴的距离

                                                         screenY:计算机屏幕顶部到鼠标的位置

     四、IE浏览器兼容性的写法

         和上面的添加删除事件兼容性的写法是一样的,直接在里面添加一下函数,进行分钟以便调用

    var EventUtil={
            getTarget:function(event){                     //获取事件点击的目标
                return event.target || event.srcElement;
            },
            preventDefault:function(event){               //阻止浏览器的默认事件的执行
                if(event.preventDefault){
                    event.preventDefault();
                }else{
                    event.returnValue=false;
                }
            },
            stopPropagation:function(event){                 //阻止事件的冒泡
                if(event.stopPropagation){
                    event.stopPropagation();
                }else{
                    event.cancelBubble=true;
                }
            }
        };
    

        

  • 相关阅读:
    c++ 模板<template class T>
    HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
    用1年的经验做了10年还是,用10年的经验做一件事.
    last_inset_id()mysql注意
    小心变成这样一个人!!!
    主动哥
    转:开个小书店。。呵呵
    mysql 更改主键信息
    磁盘预录
    评估项目
  • 原文地址:https://www.cnblogs.com/layaling/p/8603545.html
Copyright © 2011-2022 走看看