zoukankan      html  css  js  c++  java
  • JS 为任意元素添加任意事件的兼容代码

    为元素绑定事件(DOM):有两种 addEventListener 和 attachEvent;
     
    相同点: 都可以为元素绑定事件
    不同点:
      1.方法名不一样
      2.参数个数不一样addEventListener三个参数,attachEvent两个参数
      3.addEventListener 谷歌,火狐,IE11支持,IE8不支持
        attachEvent 谷歌火狐不支持,IE11不支持,IE8支持
      4.this不同,addEventListener 中的this是当前绑定事件的对象
        attachEvent中的this是window
      5.addEventListener中事件的类型(事件的名字)没有on
        attachEvent中的事件的类型(事件的名字)有on
     
     
    1 对象.addEventListener("事件类型",事件处理函数,false);
      谷歌和火狐支持,IE8不支持;
        为按钮绑定点击事件
          参数1:事件的类型---事件的名字,没有on
          参数2:事件处理函数---函数(命名函数,匿名函数)
          参数3:Boolean类型,是否使用捕获,一般用false 。(详情请看后面章节的事件阶段)
    //为同一个元素绑定多个相同的事件--
     my$("btn").addEventListener("click",function () {
       console.log("小米一岁了");
     },false);
     my$("btn").addEventListener("click",function () {
       console.log("小米二岁了");
     },false);
     my$("btn").addEventListener("click",function () {
       console.log("小米三岁了");
     },false);
     my$("btn").addEventListener("click",function () {
       console.log("小米四岁了");
     },false);
    2 对象.attachEvent("有on的事件类型",事件处理函数)
      谷歌不支持,火狐不支持,IE8支持;

        参数1:事件类型---事件名字,有on
        参数2:事件处理函数---函数(命名函数,匿名函数)

    my$("btn").attachEvent("onclick",function () {
       console.log("小米一岁了");
     });
    
     my$("btn").attachEvent("onclick",function () {
       console.log("小米二岁了");
     });
    
     my$("btn").attachEvent("onclick",function () {
       console.log("小米三岁了");
     });

    3 为了解决这个兼容的问题:

    //element 为要绑定事情的元素 type 为绑定那种事件 func  事件的处理函数
      function addEventListener(element,type,func) {
        //判断浏览器是否支持这个方法
        if(element.addEventListener){
          element.addEventListener(type,func,false);
        }else if(element.attachEvent){
          element.attachEvent("on"+type,func);
        }else{
          element["on"+type]=func;
        }
      }
  • 相关阅读:
    IDA Supported Processors
    Hex-Rays Decompiler
    USB ISP(ICSP) Open Programmer < PWM ADC HV PID >
    A SCSI command code -- SIMPLIFIED DIRECT-ACCESS DEVICE (RBC)
    How to match between physical usb device and its drive letter?
    记录一下公司数据库升级的步骤
    Windows2003 SQL2005解决系统Administrator密码不知道的问题
    在SSMS里批量删除表、存储过程等各种对象
    用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表
    分享一张SQLSERVER执行流程的图片
  • 原文地址:https://www.cnblogs.com/wanguofeng/p/10566609.html
Copyright © 2011-2022 走看看