JS兼容性笔记--持续更新

JS兼容性笔记

1.IE8不支持getClassName

hack:不支持就给它创建这个方法
if(!document.getElementByClassName){
    document.getElementByClassName = function(classname){
        var all = document.getElementByTagName("*");
        var newarr = [];
        for( var i = 0; i<all.length; i++){
            var classList = all[i].className.split(/\s+/);
            var flag = false;
            for(var j = 0; j<classList.length; j++){
                if(classList[j] == classname){
                    return true;
                }
            }
            if(flag){
                newarr.push(all[i]);
            }
        }
        return newarr;
    }
}

2.获取非行内样式的style的兼容写法

var fillDiv = document.getElementById("filldiv");
var 属性名 = fillDiv.currentStyle  ?  fillDiv.currentStyle.width  :  getComputedStyle(fillDiv).width

【tips】JS获取非行内样式的style,用getComputedStyle(id名).属性名,只是获取,不耽误更改。
将上面的fillDiv.currentStyle换成VBArray也可以。

3.获取Event事件对象

xxxx.onclick = function(evt){
    var e = evt || window.event;
}

老版本的IE:e不是由参数传进去的,用的时候直接在内部直接写window.event

4.键盘事件-获取键盘码keycode

xxxx.onclick = function(evt){
    var keycode = e.keyCode || e.which;
}

5.阻止事件传播

e.stopPropagation ? e.stopPropagration : e.cancelBubble = true;

ie里面不支持stopPropagation

6.添加事件监听

//兼容写法
function addEvent(ele, eventtype, fn, isCapture){
               if(ele.addEventListener){//window.VBArray,IE11已经不支持attachEvent,但是仍然支持window.VBArray,会报错,所以不用它当判断条件
                    ele.addEventListener(eventtype, fn, 
isCapture);
               }else{
                    ele.attachEvent("on" + eventtype, fn);
               }
          }

标准写法:xxx.addEventListener(“mouseover”, function(){}, true);

IE写法:xxx.attachEvent(“onclick”, function(){});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值