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 相关文章推荐
增强的 JavaScript 的 trim 函数的代码
Aug 13 Javascript
JS 分号引起的一段调试问题
Jun 18 Javascript
更换select下拉菜单背景样式的实现代码
Dec 20 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
Jan 12 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
jQuery学习笔记之toArray()
Jun 09 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
jquery获取transform里的值实现方法
Dec 12 jQuery
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
PHP+ajax分页实例简析
2015/12/07 PHP
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python跳出循环语句continue与break的区别
2014/08/25 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
python字符串的常用操作方法小结
2016/05/21 Python
python的pip安装以及使用教程
2018/09/18 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
团队精神的演讲稿
2014/05/14 职场文书
工程部岗位职责
2015/02/10 职场文书
学校国庆节活动总结
2015/03/23 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书