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-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
Dec 11 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
微信小程序动态显示项目倒计时效果
Jun 13 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
微信小程序点击保存图片到本机功能
Dec 13 Javascript
JS实现横向跑马灯效果代码
Apr 20 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
May 19 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自定义函数实现JS的escape的方法示例
2016/07/07 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
微信小程序 实例开发总结
2017/04/26 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
React路由管理之React Router总结
2018/05/10 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
《最大的“书”》教学反思
2014/02/14 职场文书
大学军训感言200字
2014/02/26 职场文书
高三励志标语
2014/06/05 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
心灵点滴观后感
2015/06/02 职场文书
干部外出学习心得体会
2016/01/18 职场文书
mysql知识点整理
2021/04/05 MySQL
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS