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 callBack 返回前一页的js方法
Nov 30 Javascript
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
js 获取、清空input type="file"的值(示例代码)
Dec 24 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
Node.js事件驱动
Jun 18 Javascript
angular实现表单验证及提交功能
Feb 01 Javascript
AngularJS页面传参的5种方式
Apr 01 Javascript
Angular4自制一个市县二级联动组件示例
Nov 21 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
使用JS实现导航切换时高亮显示的示例讲解
Aug 22 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 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生成Gif图片验证码
2013/10/27 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
php自定义hash函数实例
2015/05/05 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
Python实现获取网站PR及百度权重
2015/01/21 Python
python uuid模块使用实例
2015/04/08 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
html5与css3小应用
2013/04/03 HTML / CSS
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
房地产销售计划书
2014/01/10 职场文书
企业车辆管理制度
2014/01/24 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
对讲机的最大通讯距离是多少
2022/02/18 无线电
Python OpenCV实现图形检测示例详解
2022/04/08 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis