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’]这个在现代浏览器中可以使用。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论