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;
        }
      }
  • 相关阅读:
    八进制转换成十进制(你会明白的,呵呵)
    从键盘读取7个数(150)的整数值,每读一个值打印出该值个数的*号.
    两个字符串的连接程序
    判断一个素数能被几个9整除.
    809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
    一个偶数总能表示为两个素数的和.
    07所能组成的奇数的个数
    asp.net .ashx文件使用Server.MapPath解决方法
    MVC常见问题小总结
    amcharts_2.6.13左上角的广告咱去掉
  • 原文地址:https://www.cnblogs.com/wanguofeng/p/10566609.html
Copyright © 2011-2022 走看看