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 兼容性寫法