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实现UTF8编码转换成gb2312编码
Dec 22 Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 Javascript
ajax java 实现自动完成功能
Dec 19 Javascript
使用node.js 制作网站前台后台
Nov 13 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
Feb 15 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
了解ESlint和其相关操作小结
May 21 Javascript
this.$toast() 了解一下?
Apr 18 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递归调用的小技巧讲解
2013/02/19 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
php对象工厂类完整示例
2018/08/09 PHP
php json转换相关知识(小结)
2018/12/21 PHP
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Vue学习之组件用法实例详解
2020/01/06 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
Python3 queue队列模块详细介绍
2018/01/05 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
pymysql模块的操作实例
2019/12/17 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
招商业务员岗位职责
2013/12/16 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
辅导员评语
2014/05/04 职场文书
服务行业口号
2014/06/11 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python