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 相关文章推荐
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
JavaScript代码复用模式详解
Nov 07 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
AngularJS ng-repeat数组有重复值的解决方法
Oct 23 Javascript
原生js实现电商侧边导航效果
Jan 19 Javascript
关于vue.js过渡css类名的理解(推荐)
Apr 10 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
vue头部导航动态点击处理方法
Nov 02 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 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项目的方法
2006/10/09 PHP
PHP生成便于打印的网页
2006/10/09 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
php的一个简单加密解密代码
2014/01/14 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
javascript 学习笔记(onchange等)
2010/11/14 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python爬取成语接龙类网站
2018/10/19 Python
python实现事件驱动
2018/11/21 Python
python实现共轭梯度法
2019/07/03 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python tkinter三种布局实例详解
2020/01/06 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
Python datetime模块的使用示例
2021/02/02 Python
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
社区健康教育工作方案
2014/06/03 职场文书