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

    var EventUtil={
      addHandler:function(element,type,handler){
        if(element.addEventListener){  //DOM2
          element.addEventListener(type,handler,false);// 第三个参数,如果是true,表示在捕获阶段调用事件处理程序,如果是false,表示在冒泡阶段调用。
        }else if(element.attachEvent){  //IE
          element.attachEvent('on'+type,handler);//注意参数是加on的,不是DOM标准的事件名
        }else{  //DOM0
          element['on'+type]=handler;//居然可以这样绑定 ,之前一直都是用element.onclick,哎自己太笨了
        }
      },
      removeHandler:function(element,type,handler){
        if(element.removeEventListener){
          element.removeEventListener(type,handler,false);
        }else if(element.detachEvent){
          element.detachEvent('on'+type,handler);
        }else{
          element['on'+type]=null;
        }
      } };

    DOM2级方法添加事件处理程序的好处是可以添加多个事件处理程序,会按照添加顺序处理。

    在IE中使用attachEvent()与使用DOM0级方法的主要区别在于事件处理程序的作用域,在使用DOM0级方法的情况下,事件处理程序会在其所属元素的作用域内运行,而在使用attachEvent()方法的情况下,事件处理程序在全局作用域中运行,因此this等于window(!!!!!!!!!!!!!!!)。attachEvent()也能添加多个事件处理程序,但是事件的执行顺序和添加顺序相反。

  • 相关阅读:
    Scanner类
    每日总结-05-17
    栈的基本操作 出栈与入栈
    Angularjs1.x 项目结构
    【树形dp小练】HDU1520 HDU2196 HDU1561 HDU3534
    [ACM] hdu 1251 统计难题 (字典树)
    Asakura的魔法世界
    distcp导致个别datanode节点数据存储严重不均衡分析
    Redis集群主备模式部署
    java的输入输出流(一)
  • 原文地址:https://www.cnblogs.com/em2464/p/8660177.html
Copyright © 2011-2022 走看看