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 相关文章推荐
判断控件是否已加载完成的代码
Feb 24 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
js字符串转换成xml对象并使用技巧解读
Apr 18 Javascript
详解JavaScript语法对{}处理的坑爹之处
Jun 05 Javascript
input输入框鼠标焦点提示信息
Mar 17 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
Dec 08 Javascript
angular中使用Socket.io实例代码
Jun 03 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
在vue-cli3中使用axios获取本地json操作
Jul 30 Javascript
vue将文件/图片批量打包下载zip的教程
Oct 21 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
坏狼php学习 计数器实例代码
2008/06/15 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
2020/04/13 PHP
javascript cookies操作集合
2010/04/12 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
js重写方法的简单实现
2016/07/10 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
Python中的super用法详解
2015/05/28 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
python中map的基本用法示例
2018/09/10 Python
tensorflow 环境变量设置方式
2020/02/06 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
社区居务公开实施方案
2014/03/27 职场文书
学术诚信承诺书
2014/05/26 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
科技馆观后感
2015/06/08 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
Django分页器的用法你都了解吗
2021/05/26 Python