JS腳本兼容性問(wèn)題解決方案
這里和大家分享一下解決JS腳本兼容的幾個(gè)小技巧,關(guān)于JS腳本兼容性我們***個(gè)要考慮的問(wèn)題應(yīng)該是運(yùn)行的平臺(tái)是否支持客戶端腳本?通常的做法是將腳本主體包括在一條HTML注釋中。
解決JS腳本兼容的幾個(gè)小技巧
對(duì)于存在JS腳本兼容性的地方,解決方法是針對(duì)不同的平臺(tái)使用不同的特性或是用替代方法實(shí)現(xiàn),這是上策;但總有一些時(shí)候我們用上述方法無(wú)法解決時(shí),我們可以看下這個(gè)問(wèn)題是否嚴(yán)重,如果不嚴(yán)重,那我們就可以忽略它。
1.使用HTML注釋掉腳本
關(guān)于JS腳本兼容性我們***個(gè)要考慮的問(wèn)題應(yīng)該是運(yùn)行的平臺(tái)是否支持客戶端腳本?通常的做法是將腳本主體包括在一條HTML注釋中:
- <scriptlanguagescriptlanguage="javascript">
- <!--
- document.write(newDate());
- //-->
- </script>
這樣不支持JS腳本的瀏覽器會(huì)忽略<script>和</script>標(biāo)簽并把其他代碼當(dāng)作一條HTML注釋處理,而支持腳本的瀏覽器則把"<!--"這句當(dāng)作一條HTML注釋語(yǔ)句,其他語(yǔ)句正常執(zhí)行,HTML注釋結(jié)尾"-->"用"//"進(jìn)行單行注釋。
2.特性、平臺(tái)檢測(cè)
當(dāng)我們要使用的特性和平臺(tái)有關(guān)時(shí),就得先進(jìn)行檢測(cè)再使用,檢測(cè)的方式有兩種:一種是直接檢測(cè)平臺(tái)是否支持該特性,另一種是檢測(cè)平臺(tái)類型再使用相應(yīng)的特性。代碼如下:
- <scriptlanguagescriptlanguage="javascript">
- <!--
- //a.檢測(cè)是否支持特性
- if(s.split){
- a=s.split(",");//支持,直接使用
- }else{
- a=s.mysplit(",");//不支持,使用替代方法
- }
- //b.平臺(tái)檢測(cè)
- if(navigator.appName.indexOf("Microsoft")!=-1){
- //使用IE支持的特性
- }
- //-->
- </script>
3.替代?忽略?停止?
對(duì)于存在JS腳本兼容性的地方,解決方法是針對(duì)不同的平臺(tái)使用不同的特性或是用替代方法實(shí)現(xiàn),這是上策;但總有一些時(shí)候我們用上述方法無(wú)法解決時(shí),我們可以看下這個(gè)問(wèn)題是否嚴(yán)重,如果不嚴(yán)重,那我們就可以忽略它,比如一個(gè)特性在Netscape2上無(wú)效,但現(xiàn)在基本上沒(méi)人使用Netscape2了,那我們就忽略它;如果無(wú)法解決但問(wèn)題又比較嚴(yán)重,那我們就應(yīng)停止腳本的運(yùn)行,并明確告訴用戶發(fā)生的問(wèn)題!
【編輯推薦】
- 解決JS在firefox和IE下差異問(wèn)題
- 解析JS中實(shí)現(xiàn)打印的兩大方式
- 盤點(diǎn)JavaScript中Function三大用途
- 技術(shù)分享 如何識(shí)別控制DHTML和JS中的頁(yè)面元素
- JavaScript調(diào)試工具解決IE6等多版本共存問(wèn)題