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变强势
Jun 22 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
Aug 02 Javascript
JS实现HTML表格排序功能
Aug 05 Javascript
JS实现拖动滚动条评分的效果代码分享
Sep 29 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
Feb 10 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
Sep 15 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
React路由鉴权的实现方法
Sep 05 Javascript
vue resource发送请求的几种方式
Sep 30 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
Zend 输出产生XML解析错误
2009/03/03 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
python 定时修改数据库的示例代码
2018/04/08 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
django 模型中的计算字段实例
2020/05/19 Python
keras的三种模型实现与区别说明
2020/07/03 Python
python里glob模块知识点总结
2021/01/05 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
司法所长先进事迹
2014/06/02 职场文书
综合办公室岗位职责
2015/04/11 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
python中redis包操作数据库的教程
2022/04/19 Python