原生js兼容写法_在ie标准下的兼容性写法

更新日期: 2018-04-18阅读量: 2417标签: 兼容

经常使用原生js,就要考虑到一些浏览器上的兼容,尤其是IE,下面就整理关于js的一些兼容性写法,原文来源:https://www.cnblogs.com/cy1121/p/5891904.html


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);
        }
 }



站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/665

CSS 3中-webkit-, -moz-, -o-, -ms-这些私有前缀的含义和兼容

css3作为页面样式的表现语言,增加了很多新的属性,但是部分css3属性在一些浏览器上还处于试验阶段,所以为了有效的显示css3的样式,对应不同的浏览器内核需要不同的前缀声明。

X5内核浏览器,video兼容

使用vue-video-player在移动端微信内置浏览器打开,点击视频自动全屏问题。 参考官方 API 是 H5 同层浏览器的原因,可通过设置video属性来处理。

vue项目中兼容ie8以上浏览器的配置

首先需要在根目录的index.html文件加入如下代码;安装babel-polyfill 插件;在入口文件main.js文件中引入插件;需要在webpack.base.config.js配置文件中做如下修改

解决IE不兼容document.getElementByClassName()的实现方法

在使用原生js时候,需要通过class样式名来获取dom对象,发现在IE8以下是不支持document.getElementByClassName()这种方法的。那么我们如何来实现获取classname的兼容写法呢?

css定义变量_css原生变量的使用和兼容 附带还有更高性能,文件更高压缩率的好处

在开发中,css样式有一些属性往往需要重复使用,为了避免代码冗余,降低维护成本。我们需要使用CSS预编译工具【Sass/Less/Stylus】,随着这些工具的流行,CSS变量也开始规范制定,目前很多浏览器都已经支持了

原生js中6种常见的兼容问题以及解决方案

1.键盘检测兼容写方法;2.阻止冒泡事件冒泡的兼容;3.鼠标箭头事件对象的兼容;4.阻止浏览器默认事件兼容;5.获取非行间样式的兼容写法

如何解决css3浏览器兼容?

css3作为页面样式的表现语言,增加了很多新的属性,但是部分css3属性在一些浏览器上还处于试验阶段,所以为了有效的显示css3的样式,对应不同的浏览器内核需要不同的前缀声明。

es6之解构赋值

es6的语法已经出了很长的时间了,在使用上也可以通过babel这类的编译工具转译为浏览器可以识别的es5的语法,这篇文章主要会介绍解构赋值基本用法以及在实际使用场景中相比es5语法的优势

前端常见的CSS兼容性问题

双倍浮动BUG;表单元素行高不一致;IE6(默认16px为最小)不识别较小高度的标签(一般为10px);图片添加超链接时,在IE浏览器中会有蓝色的边框;最小高度min-height不兼容IE6

vue不兼容安卓6.0以下版本,导致页面白屏

最近开发发现一个问题,貌似vue是不支持安卓6.0以下版本的安卓机的:但是最近需求又碰到了,就不得不解决这个问题,经过网上一大堆没用的查询之后,并没有找到真正可行的解决方案,于是使用vconsole在白屏的手机上打印了错误信息

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!