当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js兼容

js兼容

2019年06月16日  | 移动技术网IT编程  | 我要评论
javascript兼容问题及处理 事件绑定 event事件 scrolltop 默认事件 阻止冒泡 滚轮 getelementsbyclassname 获取样式 事件绑定

javascript兼容问题及处理

事件绑定 event事件 scrolltop 默认事件 阻止冒泡 滚轮 getelementsbyclassname 获取样式

事件绑定

兼容写法:

function add(obj,event){
    if  (obj.addeventlistener)  {
         obj.addeventlistener(event,fn,fase);
    } 
    else {
        obj.attachevent("on"+event,fn);
    }
}

小结:addeventlistener()兼容firefox、chrome、safari、opera、ie9+;
attachevent()兼容ie7,8
   

event事件对象

兼容写法

document.onclick = function(e){
    var e = e||window.event;  
    console.log(e.clientx);
}

小结:e兼容火狐浏览器,
window.event兼容非火狐

获取scrolltop

兼容写法:

var scrolltop = document.documentelement.scrolltop||document.body.scrolltop;

小结:document.documentelement.scrolltop兼容非chrome;
document.body.scrolltop兼容chrome

阻止浏览器默认事件

兼容写法:

function prevent(event){
    if (event.preventdefault) {
        event.preventdefault();
    }else{
        event.returnvalue = false;
    }
 }

小结:eventpreventdefault()不兼容ie6-8;
event.returnvalue = false;兼容ie

阻止冒泡

兼容写法:

 
function stop(event){ if (event.stoppropagation) { event.stoppropagation(); }else{ event.canclebubble = true; } } 

小结:event.stoppropagation()不兼容ie6-8;
event.canclebubble = true兼容ie
  

滚轮

兼容写法:

function mousewheel(obj,fn){
     var ff = window.navigator.useragent.indexof('firefox');
     if (ff!=-1) {  
      obj.addeventlistener('dommousescroll',wheel,false);//兼容火狐
    }else{
        obj.onmousewheel = wheel;//非火狐
    }
}

小结:obj.addeventlistener(‘dommousescroll’,wheel,false);//兼容火狐
obj.onmousewheel = wheel;//非火狐
   

获取class

兼容写法:

function byclass(parent,classname){
        if (parent.getelementsbyclassname) {
         return parent.getelementsbyclassname(classname);
    }else{
        var arr = [];
        var els = parent.getelementsbytagname('*');
        var reg = new regexp('\\b'+classname+'\\b',g);
        for (var i=0;i

小结:getelementsbyclassname //ie8以下不兼容

获取样式兼容写法
var cur = obj.currentstyle ? obj.currentstyle.attr :window.getcomputedstyle(ob, pseudoelt).attr;

小结: 首先js有四种获取样式的方式,下面中的‘attr’代表样式属性

obj.offsetattr,例如obj.offsetleft。全系列浏览器兼容,但obj.offsetwidth中的width=width+padding+border;所以在运动框架中这个获得的值会有bug。而下面三种获取样式的方法,只会获取width=width。

.obj.style.attr 例如obj.style.left。只能获取元素的内联样式,内部样式和外部样式使用style是获取不到的

obj.currentstyle.attr 或者obj.currentstyle[‘attr’]。这个则只能在ie8及以下使用

window.getcomputedstyle(ob, pseudoelt).attr 或者 window.getcomputedstyle(ob, pseudoelt)[‘attr’]这个在现代浏览器中可以使用。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网