1.关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题数组
封装一个获取行外样式的函数:(兼容全部浏览器,包括低版本IE6,7)
funtion getStyle(obj,name){
if(obj.currentStyle){
//IE
return obj.currentStyle[name];
}else{
//Chrom,FF
return getComputedStyle(obj,false)[name];
}
}
调用:getStyle(oDiv,'width');浏览器
2.关于用“索引”获取字符串每一项出现的兼容性问题:函数
对于字符串也有相似于 数组 这样的经过 下标索引 获取每一项的值,
var str="abcde";
aletr(str[1]);
可是低版本的浏览器IE6,7不兼容
兼容方法:str.charAt(i) //所有浏览器都兼容工具
3.关于DOM中 childNodes 获取子节点出现的兼容性问题this
childNodes:获取子节点,
--IE6-8:获取的是元素节点,正常
--高版本浏览器:可是会包含文本节点和元素节点(不正常)代理
childNodes为咱们带来的困扰彻底能够有children属性来代替。
children属性:只获取元素节点,不获取文本节点,兼容全部的浏览器,
比上面的好用因此咱们通常获取子节点时,最好用children属性。
var oUl=document.getElementById('ul');
oUl.children.style.background="red";orm
4.关于使用 firstChild,lastChild 等,获取第一个/最后一个元素节点时产生的问题对象
--IE6-8下: firstChild,lastChild,nextSibling,previousSibling,获取第一个元素节点
(高版本浏览器IE9+,FF,Chrome不兼容,其获取的空白文本节点)
--高版本浏览器下: firstElementChild,lastElementChild,nextElementSibling,previousElementSibling
(低版本浏览器IE6-8不兼容)
--兼容写法: 找到ul的第一个元素节点,并将其背景色变成红色
var oUl=document.getElementById('ul');
if(oUl.firstElementChild){
//高版本浏览器
oUl.firstElementChild.style.background='red';
}else{
//IE6-8
oUl.firstChild.style.background='red';
}索引
5.关于使用 event对象,出现的兼容性问题事件
var oEvent==ev||event;
6.关于为一个元素绑定两个相同事件:attachEvent/attachEventLister 出现的兼容问题
多事件绑定封装成一个兼容函数:
function myAddEvent(obj,ev,fn){
if(obj.attachEvent){
//IE8如下
obj.attachEvent('on'+ev,fn);
}else{
//FF,Chrome,IE9-10
obj.attachEventLister(ev,fn,false);
}
}
myAddEvent(oBtn,'click',function(){
alert(a);
});
7.关于获取滚动条距离而出现的问题
兼容处理:var scrollTop=document.documentElement.scrollTop||document.body.scrollTop
八、键盘事件 keyCode 兼容性写法