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 相关文章推荐
当json键为数字时的取值方法解析
Nov 15 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
JavaScript中定义类的方式详解
Jan 07 Javascript
使用Curl命令查看请求响应时间方法
Nov 04 Javascript
基于slideout.js实现移动端侧边栏滑动特效
Nov 28 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
Oct 31 Javascript
对vue里函数的调用顺序介绍
Mar 17 Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 Javascript
Vue简单实现原理详解
May 07 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 程序员应该使用的10个组件
2009/10/31 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
动态加载js和css(外部文件)
2013/04/17 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
C#公司笔试题
2014/03/28 面试题
高中数学教师求职信
2013/10/30 职场文书
机关会计岗位职责
2014/04/08 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
科技工作者先进事迹
2014/08/16 职场文书
社区服务活动报告
2015/02/05 职场文书
员工自我评价范文
2015/03/11 职场文书
市级三好生竞选稿
2015/11/21 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
《法国号》教学反思
2016/02/22 职场文书