JavaScript中的跨浏览器事件操作的基本方法整理


Posted in Javascript onMay 20, 2016

绑定事件

EU.addHandler = function(element,type,handler){
  //DOM2级事件处理,IE9也支持
  if(element.addEventListener){
    element.addEventListener(type,handler,false);
  }
  else if(element.attachEvent){
    //type加'on'
    //IE9也可以这样绑定
    element.attachEvent('on' + type,handler);
  }
  //DOM0级事件处理步,事件流也是冒泡
  else{
    element['on' + type] = handler;
  }
};

取消绑定事件
和绑定事件的处理基本一致,有一个注意点:
传入的handler必须与绑定事件时传入的相同(指向同一个函数)

EU.removeHandler = function(element,type,handler){
  if(element.removeEventListener){
    element.removeEventListener(type,handler);
  }
  else if(element.attachEvent){
    element.detachEvent('on' + type,handler);
  }
  else{
    //属性置空就可以
    element['on' + type] = null;
  }
};

跨浏览器添加事件

function addEvent(obj,type,fn){
    if(obj.addEventListener){
      obj.addEventListener(type,fn,false);
    }else if(obj.attachEvent){//IE
      obj.attchEvent('on'+type,fn);
    }
  }

   
跨浏览器移除事件

function removeEvent(obj,type,fn){
  if(obj.removeEventListener){
    obj.removeEventListener(type,fn,false);
  }else if(obj.detachEvent){//兼容IE
    obj.detachEvent('on'+type,fn);
  }
}

跨浏览器阻止默认行为

function preDef(ev){
    var e = ev || window.event;
    if(e.preventDefault){
      e.preventDefault();
    }else{
      e.returnValue =false;
    }
  }

   
跨浏览器获取目标对象

function getTarget(ev){
  if(ev.target){//w3c
    return ev.target;
  }else if(window.event.srcElement){//IE
    return window.event.srcElement;
  }
}

跨浏览器获取滚动条位置

//跨浏览器获取滚动条位置,sp == scroll position
  function getSP(){
    return{
      top: document.documentElement.scrollTop || document.body.scrollTop,
      left : document.documentElement.scrollLeft || document.body.scrollLeft;
    }
  }

跨浏览器获取可视窗口大小

function getWindow () {
      if(typeof window.innerWidth !='undefined') {
        return{
          width : window.innerWidth,
          height : window.innerHeight
        }

      } else{
        return {
          width : document.documentElement.clientWidth,
          height : document.documentElement.clientHeight
        }
      }
    },

       

Javascript 相关文章推荐
input的focus方法使用
Mar 13 Javascript
xheditor与validate插件冲突的解决方案
Apr 15 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
javascript显示上周、上个月日期的处理方法
Feb 03 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
jquery如何实现点击空白处隐藏元素
Dec 05 jQuery
使用typescript开发angular模块并发布npm包
Apr 19 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
Sep 02 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
Aug 06 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 #Javascript
详解JavaScript中的事件流和事件处理程序
May 20 #Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 #Javascript
JavaScript中的Object对象学习教程
May 20 #Javascript
jQuery基本选择器(实例及表单域value的获取方法)
May 20 #Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 #Javascript
深入理解setTimeout函数和setInterval函数
May 20 #Javascript
You might like
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
python ddt实现数据驱动
2018/03/14 Python
python基础教程项目二之画幅好画
2018/04/02 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
keras slice layer 层实现方式
2020/06/11 Python
pandas DataFrame运算的实现
2020/06/14 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
关于抽烟的检讨书
2014/02/25 职场文书
软弱涣散基层党组织整改方案
2014/10/25 职场文书
重阳节慰问信
2015/02/15 职场文书
人与自然观后感
2015/06/16 职场文书
Redis全局ID生成器的实现
2022/06/05 Redis