久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

JS中兼容性問題處理方法

放大字體  縮小字體 發布日期:2018-02-26  來源:企業800網  作者:新格網  瀏覽次數:541  【去百度看看】
核心提示:本文主要和大家分享JS中兼容性問題處理方法,希望能幫助到大家。
本文主要和大家分享JS中兼容性問題處理方法,希望能幫助到大家。

1.關于獲取行外樣式 currentStyle 和 getComputedStyle 出現的兼容性問題
我們都知道js通過style不可以獲取行外樣式,當我們需要獲取行外樣式時:
我們一般通過這兩個方法獲取行外樣式:
IE下: currentStyle
Chrome,FF下: getComputedStyle(op,false)
兼容兩個瀏覽器的寫法:
if(op.currentStyle){
alert(op.currentStyle.width);
}else{
alert(getComputedStyle(op,false).width);
}
*注:在解決很多兼容性寫法時,都是用if..else..

封裝一個獲取行外樣式的函數:(兼容所有瀏覽器,包括低版本IE6,7)
funtion getStyle(obj,name){
if(obj.currentStyle){
//IE
return obj.currentStyle[name];
}else{
//Chrom,FF
return getComputedStyle(obj,false)[name];
}
}
調用:getStyle(op,'width');



2.關于用“索引”獲取字符串每一項出現的兼容性問題:
對于字符串也有類似于 數組 這樣的通過 下標索引 獲取每一項的值,
var str="abcde";
aletr(str[1]);
但是低版本的瀏覽器IE6,7不兼容
兼容方法:str.charAt(i) //全部瀏覽器都兼容
var str="abcde";
for(var i=0;i<str.length;i++){
alert(str.charAt(i)); //放回字符串中的每一項
}


3.關于DOM中 childNodes 獲取子節點出現的兼容性問題
childNodes:獲取子節點,
--IE6-8:獲取的是元素節點,正常
--高版本瀏覽器:但是會包含文本節點和元素節點(不正常)
解決方法: 使用nodeType:節點的類型,并作出判斷
--nodeType=3-->文本節點
--nodeTyPE=1-->元素節點
例: 獲取ul里所有的子節點,讓所有的子節點背景色變成紅色
獲取元素子節點兼容的方法:
var oUl=document.getElementById('ul');
for(var i=0;i<oUl.childNodes.length;i++){
if(oUl.childNodes[i].nodeType==1){
oUl.childNodes[i].style.background='red';
}
}
注:上面childNodes為我們帶來的困擾完全可以有children屬性來代替。
children屬性:只獲取元素節點,不獲取文本節點,兼容所有的瀏覽器,
比上面的好用所以我們一般獲取子節點時,最好用children屬性。
var oUl=document.getElementById('ul');
oUl.children.style.background="red";



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對象,出現的兼容性問題
如: 獲取鼠標位置
IE/Chrom: event.clientX;event.clientY
FF/IE9以上/Chrom: 傳參ev--> ev.clientX;ev.clientY
獲取event對象兼容性寫法: var oEvent==ev||event;
document.oncilck=function(ev){
var oEvent==ev||event;
if(oEvent){
alert(oEvent.clientX);
}
}


6.關于為一個元素綁定兩個相同事件:attachEvent/attachEventLister 出現的兼容問題
事件綁定:(不兼容需要兩個結合做兼容if..else..)
IE8以下用: attachEvent('事件名',fn);
FF,Chrome,IE9-10用: attachEventLister('事件名',fn,false);
多事件綁定封裝成一個兼容函數:
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);
});
myAddEvent(oBtn,'click',function(){
alert(b);
});


7.關于獲取滾動條距離而出現的問題
當我們獲取滾動條滾動距離時:
IE,Chrome: document.body.scrollTop
FF: document.documentElement.scrollTop
兼容處理:var scrollTop=document.documentElement.scrollTop||document.body.scrollTop

相關推薦:

一些js中兼容性易錯問題的總結

Javascript中關于兼容性能的具體分析

Javascript字符串操作方法和瀏覽器兼容性實例詳解

以上就是JS中兼容性問題處理方法的詳細內容,更多請關注php中文網其它相關文章!

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業800網 · 提供技術支持