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 相关文章推荐
js之onload事件的一点使用心得
Aug 14 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
Oct 31 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
JS清除字符串中重复值的实现方法
Aug 03 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
微信小程序 循环及嵌套循环的使用总结
Sep 26 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
基于Vue实现微前端的示例代码
Apr 24 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数组函数序列之array_unique() - 去除数组中重复的元素值
2011/10/29 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
php 浮点数比较方法详解
2017/05/05 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
python中的二维列表实例详解
2018/06/19 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
施工人员岗位职责
2013/12/12 职场文书
初中生操行评语大全
2014/04/24 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript