常用原生JS兼容性写法汇总


Posted in Javascript onApril 27, 2016

就来总结一下简单的东西

备注:一下的方法都是包裹在一个EventUtil对象里面的,直接采用对象字面量定义方法了。。。

①添加事件方法

addHandler:function(element,type,handler){
 if(element.addEventListener){//检测是否为DOM2级方法
  element.addEventListener(type, handler, false);
 }else if (element.attachEvent){//检测是否为IE级方法
  element.attachEvent("on" + type, handler);
 } else {//检测是否为DOM0级方法
  element["on" + type] = handler;
 }
}

②移除之前添加的事件方法

removeHandler:function(element, type, handler){
  if (element.removeEventListener){
   element.removeEventListener(type, handler, false);
  } else if (element.detachEvent){
   element.detachEvent("on" + type, handler);
  } else {
   element["on" + type] = null;
  }
 }

③获取事件及事件对象目标

//获取事件对象的兼容性写法
 getEvent: function(event){
  return event ? event : window.event;
 },
 //获取事件对象目标的兼容性写法
 getTarget: function(event){
  return event.target || event.srcElement;
 }

④阻止浏览器默认事件的兼容性写法

preventDefault: function(event){
  if (event.preventDefault){
   event.preventDefault();
  } else {
   event.returnValue = false;
  }
 }

⑤阻止事件冒泡的兼容性写法

stopPropagation: function(event){
  if (event.stopPropagation){
   event.stopPropagation();
  } else {
   event.cancelBubble = true;
  }
 }

⑥mouseover和mouseout 事件才包含的获取相关元素的方法

//mouseover和mouseout 事件才包含的获取相关元素的方法
getRelatedTarget: function(event){
 if (event.relatedTarget){
  return event.relatedTarget;
 } else if (event.toElement){
  return event.toElement;
 } else if (event.fromElement){
  return event.fromElement;
 } else {
  return null;
 }
}

⑦鼠标滚轮判断

对于mousedown 和mouseup 事件来说,则在其event 对象存在一个button 属性,
表示按下或释放的按钮。DOM的button 属性可能有如下3 个值:0 表示主鼠标按钮,1 表示中间的鼠
标按钮(鼠标滚轮按钮),2 表示次鼠标按钮。在常规的设置中,主鼠标按钮就是鼠标左键,而次鼠标
按钮就是鼠标右键。
IE8 及之前版本也提供了button 属性,但这个属性的值与DOM 的button 属性有很大差异。
 0:表示没有按下按钮。
 1:表示按下了主鼠标按钮。
 2:表示按下了次鼠标按钮。
 3:表示同时按下了主、次鼠标按钮。
 4:表示按下了中间的鼠标按钮。
 5:表示同时按下了主鼠标按钮和中间的鼠标按钮。
 6:表示同时按下了次鼠标按钮和中间的鼠标按钮。
 7:表示同时按下了三个鼠标按钮。

getButton: function(event){
 if (document.implementation.hasFeature("MouseEvents", "2.0")){
  return event.button;
 } else {
  switch(event.button){
   case 0:
   case 1:
   case 3:
   case 5:
   case 7:
   return 0;
   case 2:
   case 6:
   return 2;
   case 4:
   return 1;
  }
 }
}

⑧能够取得鼠标滚轮增量值(delta)的方法

getWheelDelta: function(event){
 if (event.wheelDelta){
  return (client.engine.opera && client.engine.opera < 9.5 ?
   -event.wheelDelta : event.wheelDelta);
 } else {
  return -event.detail * 40;//firefox中的值为+3表示向上滚,-3表示向下滚
 }
}

⑨跨浏览器的方式取得字符编码

getCharCode: function(event){
 if (typeof event.charCode == "number"){
  return event.charCode;
 } else {
  return event.keyCode;
 }
}

⑩访问剪贴板中的数据

getClipboardText: function(event){
  var clipboardData = (event.clipboardData || window.clipboardData);
  return clipboardData.getData("text");
 }

11.设置剪贴板中的数据

setClipboardText: function(event, value){
  if (event.clipboardData){
   return event.clipboardData.setData("text/plain", value);
  } else if (window.clipboardData){
   return window.clipboardData.setData("text", value);
  }
 }

封装一下,然后就可以直接用了。

完整文件及更多CSS、LESS基础重置样式见:https://github.com/LuckyWinty/resetFile

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
输入密码检测大写是否锁定js实现代码
Dec 03 Javascript
js实现获取焦点后光标在字符串后
Sep 17 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
给before和after伪元素设置js效果的方法
Dec 04 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
在JavaScript中调用Java类和接口的方法
Sep 07 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
vue组件命名和props命名代码详解
Sep 01 Javascript
在vue和element-ui的table中实现分页复选功能
Dec 04 Javascript
JavaScript 防篡改对象的用法示例
Apr 24 Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 #Javascript
跨域资源共享 CORS 详解
Apr 26 #Javascript
Bootstrap滚动监听(Scrollspy)插件详解
Apr 26 #Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 #Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 #Javascript
Bootstrap每天必学之模态框(Modal)插件
Apr 26 #Javascript
深入理解JS中的substr和substring
Apr 26 #Javascript
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
php xfocus防注入资料
2008/04/27 PHP
php筛选不存在的图片资源
2015/04/28 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
怎样让char类型的东西转换成int类型
2013/12/09 面试题
初婚未育未抱养证明
2014/01/12 职场文书
教师个人自我鉴定
2014/02/08 职场文书
加薪申请报告范本
2015/05/15 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
用Python可视化新冠疫情数据
2022/01/18 Python