js中的兼容问题汇总

更新日期: 2019-03-10阅读: 1.9k标签: 兼容

在使用js的过程中,往往会发现关于IE浏览器的兼容问题,当然微软现在自己也打算抛弃IE,推出了edge浏览器,对于前端来说是个好消息.

但IE的用户占比仍然不容小觑,因此这里整理下常见的几个兼容问题附上解决方案,以免不时之需.


1.非行内样式的获取

IE浏览器:element.currentstyle+attr
正常浏览器(chrome,FF):getComputedStyle(element,false)+attr

这两类浏览器以下都简称为IE和正常,接下来封装一个函数,方便调用(兼容所有浏览器)

function getStyle(ele,attr){
var a = "";
if(ele.currentStyle){                    //IE
   a = ele.currentStyle[attr];   
}else{
    = getComputedStyle(ele,false)[attr];  //正常
}

 

2.获取事件对象

IE  : window.event
正常 : 给事件传参
obox.onclick=function(eve){    
        var e=eve||window.event;
        console.log(e)
}


 3.阻止事件冒泡

事件冒泡:当触发元素的某个事件时,它会先触发自己的对应事件,然后依次向上触发所有父级的相同事件;上一父级没有相同事件,继续向上触发
需要注意的是onmouseenter和onmouseleave不支持事件冒泡
IE    : event.cancelBubble=true
正常 : event.stopPropagation()
function stopBubble(e){
      if(e.stopPropagation){
            e.stopPropagation();    //正常
     }else{
            e.cancelBubble = true;    //IE
     }
} 


4.事件委托

事件委托:将多个相同元素的相同事件,添加给页面上现存的共同的父元素,利用事件冒泡,配合事件源,找到真正点击的元素

IE     : event.srcElement
正常 : event.target
function tar(t){
    var t = e.target || e.srcElement;
}


5.添加事件绑定方式

事件绑定方式有两种:赋值式和监听式

(1)赋值式: (dom 0级事件绑定)
它比较常用,没兼容问题,例子:obox.onclick=function(){}
(2)监听式: (DOM 2级事件绑定) 
IE     : element.attachEvent("on"+type,cb)
正常 : element.addEventListener(type,cb)
function addEvent(ele,type,cb){
        if(ele.addEventListener){
            ele.addEventListener(type,cb)   //监听式:正常
        }else if(ele.attachEvent){
            ele.attachEvent("on"+type,cb)    //监听式:IE
        }else{
            ele["on"+type] = cb;         //赋值式
        }
}


6.删除事件绑定方式

同样的,事件绑定方式的删除对应

(1)删除赋值式事件绑定,例子:obox.onclick=null
(2)删除监听式事件绑定:
IE     : element.detachEvent("on"+type,cb)
正常 : element.removeEventListener(type,cb)
function removeEvent(ele,type,cb){
        if(ele.removeEventListener){
            ele.removeEventListener(type,cb)  //监听式:正常的删除
        }else if(ele.detachEvent){
            ele.detachEvent("on"+type,cb)   //监听式:IE的删除
        }else{
            ele["on"+type] = null;       //赋值式的删除
        }
    }


7.键盘事件的键值获取

IE     : event.which
正常 : event.keycode
function code(eve){
var e=eve||window.event;         //先获取事件
 var code=e.keyCode||e.which;   //再获取键值
}


 8.阻止默认事件

 IE     : event.returnValue = false
 正常 : event.preventDefault()
 function stopDefault(e){
        if(e.preventDefault){
            e.preventDefault()         //正常
        }else{
            e.returnValue = false;    //IE
        }
    }

链接: https://fly63.com/article/detial/5237

CSS/CSS3常用的样式兼容,样式总结

这篇文章主要介绍了css中常用但是又难记的样式作为总结,方便大家学习和使用。包括了‘单行缩略号‘、’css圆角兼容’、‘元素阴影’,‘border取消宽度影响’,‘css3的背景渐变’,‘css的透明’等等

CSS3 nth-child的使用,详解css中nth的作用,以及nth-child的兼容写法

:nth-child是css3的一个比较常用的选择器。它用于匹配属于其父元素中的子元素,不论元素的类型。 它的参数可以是数字、关键词或公式。

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

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

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

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

caniuse.com_判断浏览器对css3、html5的兼容性测试工具

caniuse.com 是一个工具性的网站,帮助人们了解各个浏览器以及它们的不同版本对 HTML5、CSS3 等高级特性的支持情况。直接在上面的输入框中输入想要搜索的属性。然后结果就直接出来了。

web浏览器在线兼容性测试工具_检测html网页在不同浏览器上的兼容问题

对于web前端开发者而言,为了确保html代码在不同浏览器上能正常工作,是一件很麻烦的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,下面就为大家推荐一下比较流行的web浏览器在线兼容性测试工具。

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

经常使用原生js,就要考虑到一些浏览器上的兼容,尤其是IE,下面就整理关于js的一些兼容性写法

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

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

es6之解构赋值

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

document.head.appendChild(element) 在 IE8 及以下报错

问题:在开发中会遇到动态添加 script 标签的情况。但是在 IE8 以下会报如下错误:SCRIPT5007: Unable to get value of the property appendChild: object is null or undefined,解决办法如下

点击更多...

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