常用原生JS兼容性写法汇总
1.添加事件方法
- 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;
- }
- }
2.移除之前添加的事件方法
- 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;
- }
- }
3.获取事件及事件对象目标
- //获取事件对象的兼容性写法
- getEvent: function(event){
- return event ? event : window.event;
- },
- //获取事件对象目标的兼容性写法
- getTarget: function(event){
- return event.target || event.srcElement;
- }
4.阻止浏览器默认事件的兼容性写法
- preventDefault: function(event){
- if (event.preventDefault){
- event.preventDefault();
- } else {
- event.returnValue = false;
- }
- }
5.阻止事件冒泡的兼容性写法
- stopPropagation: function(event){
- if (event.stopPropagation){
- event.stopPropagation();
- } else {
- event.cancelBubble = true;
- }
- }
6.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;
- }
- }
7.鼠标滚轮判断
对于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;
- }
- }
- }
8.能够取得鼠标滚轮增量值(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表示向下滚
- }
- }
9.跨浏览器的方式取得字符编码
- getCharCode: function(event){
- if (typeof event.charCode == "number"){
- return event.charCode;
- } else {
- return event.keyCode;
- }
- }
10.访问剪贴板中的数据
- 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);
- }
- }
常用原生JS兼容性写法汇总的更多相关文章
- JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()
ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实 ...
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- screen,client,page三种确定鼠标坐标的区别和原生JS事件写法,区别于Jquery的$.on(x,y);和$.click()
screenX clientX pageX的区别 screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟scre ...
- 常用原生JS方法
备注:一下的方法都是包裹在一个EventUtil对象里面的,直接采用对象字面量定义方法了... ①添加事件方法 1 2 3 4 5 6 7 8 9 addHandler:function(elemen ...
- 常用原生JS函数和语法集合
luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...
- 原生JS获取url汇总
在WEB开发中,许多开发者都比较喜欢使用javascript来获取当前url网址,本文就此为大家总结一下比较常用获取URL的javascript实现代码 URL即统一资源定位符 (Uniform Re ...
- 原生js面向对象写法
Mouse就是一个类,有自己的成员变量和成员方法,成员方法一定加上prototype,避免js原型的坑. var Mouse = function(id) { this.id = id; this.n ...
- 表单校验常用原生js库
1.字符串去除左右空格继承形式// 除去左右空格String.prototype.Trim = function() { return this.replace(/(^\s*)|(\s*$)/g, & ...
- 【CSS进阶】原生JS getComputedStyle等方法解析
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
随机推荐
- js 设置cookie
function GetCookieVal(offset) // 获得Cookie解码后的值 { var endstr = document.cookie.indexOf(";", ...
- NSLayoutConstraint-代码实现自己主动布局的函数使用方法说明
[NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelat ...
- ListView 选择多项目返回的之前的那项
当ListView多选时返回第一次选中的项索引 正确 定义一个变量 =-1 表示第一次没选任何一项 private int FirstSelectedIndex =-1; 更新Firs ...
- JavaScript读取txt文本文件方法详解
http://blog.163.com/sophie8910@126/blog/static/8304612620122834121264/ 第一步:创建一个可以将文件翻译成文件流的对象. Var f ...
- 自定义toast功能
http://download.csdn.net/detail/caryt/8105031
- IT技能栈
C++.JAVA.Objective-C 基本数据类型,集合类如字符串数组字典,自定义数据对象 内存布局,编译运行期的变化 语言特性 输入输出流,文件流,序列化 多线程,并发控制,线程池,锁 网络编程 ...
- Linux重复执行上一条命令
执行刚刚执行的一条命令: !! 执行最近一个以指定字符串开头的命令(比如man) !man !m 引用上一个命令的最后一个参数 !$ <ESC>, .
- Mybaitis配置总结
在mybatis-config.xml中配置分页插件,插件配置必须放在mapper前面 <plugins> <plugin interceptor="com.rrtong. ...
- quartz.net 基于数据库的简单实现
前面简单学习了通过XML配置或者内存指定的方式实现调度任务.但此用法实战用途较小,企业上多需要分布式集群的方式.quart团队也考虑到了这点,于是有了我们今天要学习的.基于数据库实现分布式. Name ...
- Java-Junit 的Hello world
这里介绍junit 4的基本配置: <1>建立一个java project项目. <2>在src目录下面建一个包,com.sun.junit4,在包下面写一点文件T.java ...