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对象数组按属性快速排序
Jan 31 Javascript
Javascript合并表格中具有相同内容单元格示例
Aug 11 Javascript
在浏览器中打开或关闭JavaScript的方法
Jun 03 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
dul无法加载bootstrap实现unload table/user恢复
Sep 29 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
Dec 10 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
用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+ajax无刷新上传图片实例代码
2015/11/17 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
vue父子组件通信的高级用法示例
2019/08/29 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
横向对比分析Python解析XML的四种方式
2016/03/30 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python读取Excel实例详解
2018/08/17 Python
python实现学员管理系统
2019/02/26 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
体育教师自荐信范文
2013/12/16 职场文书
学校万圣节活动方案
2014/02/13 职场文书
个人借款担保书
2014/04/02 职场文书
公务员考察材料
2014/12/23 职场文书
走进科学观后感
2015/06/18 职场文书
公司安全管理制度范本
2015/08/05 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
食品安全主题班会
2015/08/13 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技