js兼容的一些小记录
因为是遇到问题了(有时候自己解决了没有做笔记,然后同事也遇到了一样的问题,问我有时候也记不太清了,所以逼自己养成习惯,将遇到的问题记录下来,给同事和自己一个清晰的解决思路)
百度了一下,但是没有找到讲解的很易懂的例子,自己对这个断言就做一下记录,方便自己日后查看和需要的人看看。
//1.scrollTop
document.documentElement.scrollTop || document.body.scrollTop
//2.scrollLeft
document.documentElement.scrollLeft || document.body.scrollLeft
//byClassName
//3.兼容byClassName
function byClassName(obj,className){
if(obj.getElementsByClassName){
return obj.getElementsByClassName(className);
}else{
var arr = [];
var ele = obj.getElementsByTagName_r('*');
for(var i = 0,len = ele.length;i < len;i ++){
if(ele[i].className == className){
arr.push(ele[i]);
}
}
return arr;
}
}
//4.获取对象中class属性值的兼容
//getAttribute('class') ie8以下 返回null
//oDiv.getAttribute('className') : 除ie8以下支持,其它都返回null
var className = oDiv.getAttribute('className') ? oDiv.getAttribute('className') : oDiv.getAttribute('class');
//5.获取非行内样式
function getStyle(obj,attr){
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,1)[attr];
}
//6.获取事件对象的兼容
var e = 形参 || window.event;
//7.获取鼠标按键编码值的兼容
function getButton(evt){
// evt = evt || window.event;
var e = evt || window.event;
if(evt){
return e.button;
}else if(window.event){
switch(e.button){
case 1 : return 0;
case 4 : return 1;
case 2 : return 2;
}
}
}
//8.通过onkeypress获取键盘按键编码值的兼容
event.keyCode || event.which || event.charCode
//9.阻止事件冒泡的兼容
e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
//10.阻止超链接的默认行为的兼容
e.preventDefault ? e.preventDefault() : e.returnValue = false;
//11.添加事件监听器的兼容
function addEventListen(obj,evt,fun,boo){
if(obj.attachEvent){
obj.attachEvent('on' + evt,fun);
}else{
obj.addEventListener(evt,fun,boo);
}
}
//12.删除事件监听器的兼容
function removeEventListen(obj,evt,fn,boo){
if(obj.removeEventListener){
obj.removeEventListener(evt,fn,boo);
}else{
obj.detachEvent('on' + evt,fn);
}
}
//13.获取事件源的兼容
var target = e.target || e.srcElement;