99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Ajax的兼容性問(wèn)題

2018-09-06 17:18 更新

要解決兼容問(wèn)題首先注意以下幾點(diǎn):


1,document.getElementById替代document.all(ie適用)
2,集合[]替代()(ie適用)
3,target替代srcElement;parentNode替代parentElement(parentNode ie適用)
4,node.parentNode.removeChild(node)替代removeNode(this)(ie適用)
5,DOMMouseScroll替代onmousewheel;-e.detail替代event.wheelDelta
6,addEventListener替代attachEvent;removeEventListener替代detachEvent
7e.preventDefault()替代event.returnValue=false;e.stopPropagation()替代event.cancelBubble=true
8,style.top、style.left等嚴(yán)格檢查"px"單位(加"px" ie適用)
9,style="-moz-opacity:0.9"替代style="filter:alpha(opacity=90)";無(wú)其它filter
10,style.cursor="pointer"替代style.cursor="hand"(ie適用)
11,title替代alt(ie適用)
12.所有的空間在引用時(shí)都要這樣引用:document.getElementById(“XX”)。

注:標(biāo)明“ie適用”者為通用性建議寫法,未標(biāo)明者在ie里不適用。


在AJAX中,如果網(wǎng)絡(luò)或遠(yuǎn)程服務(wù)器出現(xiàn)中斷,會(huì)發(fā)生什么呢?實(shí)際上,存在兩個(gè)主要問(wèn)題;默認(rèn)地,它們并沒(méi)有在XMLHttpRequest對(duì)象中得到解決。這兩個(gè)主要問(wèn)題是:


1.處理延遲:如果網(wǎng)絡(luò)或遠(yuǎn)程服務(wù)器耗費(fèi)較多時(shí)間,那么這個(gè)問(wèn)題如何與你的AJAX應(yīng)用程序相聯(lián)系呢?

2.響應(yīng)順序:潛在地,網(wǎng)絡(luò)(或服務(wù)器)會(huì)不斷變化。這意味著,響應(yīng)可能不會(huì)以與請(qǐng)求相同的順序返回。

為了處理上面這兩個(gè)問(wèn)題,程序員必須編寫代碼來(lái)解決這個(gè)問(wèn)題。對(duì)于第一個(gè)問(wèn)題,一種可能的方案如下所示:

              function callInProgress(xmlhttp) {
 switch ( xmlhttp.readyState ) {
  case 1,2,3:
   return true;
   break;
   //Case 4和0
  default:
   return false;
   break;
 }
}      

現(xiàn)在,在調(diào)用send()前,我可以先檢查一下是否該對(duì)象正處于忙態(tài):

              if ( !callInProgress(xmlhttp) ) {
 xmlhttp.send(null);
} else {
 alert("I'm busy. Wait a moment");
}      

(一) 支持Ajax技術(shù)的瀏覽器

·微軟Internet Explorer版本5.0及以上版本,和基于它的瀏覽器(Mac OS版本不支持)

·基于Gecko的瀏覽器,如Mozilla,Mozilla Firefox,SeaMonkey,Epiphany,Galeon和Netscape版本7.1及以上版本

·實(shí)現(xiàn)KHTML API版本3.2及以上版本的瀏覽器,包括Konqueror版本3.2及以上版本,還有Apple Safari版本1.2及以上版本

·Opera瀏覽器版本8.0及以上版本,包括Opera Mobile瀏覽器版本8.0及以上版本


(二) 不支持Ajax技術(shù)的瀏覽器

·Opera 7及以下版本

·微軟Internet Explorer 4.0及以下版本

·基于文本的瀏覽器,如Lynx和Links

·沒(méi)有可視化實(shí)現(xiàn)的瀏覽器

·1997年以前的瀏覽器


Ajax傳輸中文兼容性問(wèn)題的解決方案


使用ajax時(shí),采用get傳值,如果url中含有中文,我們可以發(fā)現(xiàn)在火狐和IE下服務(wù)器端獲得的值是不一樣的。因?yàn)榛鸷捎玫氖莡tf8編碼傳值,而IE采用的gb2312編碼傳值的。解決這個(gè)兼容性問(wèn)題有兩個(gè)方案,具體如下:


方案1:客戶端處理。對(duì)中文進(jìn)行編碼

HTML代碼:

<script>
$(function(){
    $.ajax({
        url:'index.php?name='+encodeURI('小明'),
        success:function(msg){
            alert(msg);
        }
    });
})
</script>

PHP代碼:

<?php
$name = urldecode($_GET['name']);
echo $name; // 輸出"小明"
?>


方案2:服務(wù)器端處理。判斷字符編碼,進(jìn)行轉(zhuǎn)碼。

HTML代碼:

<script>
$(function(){
    $.ajax({
        url:'index.php?name='小明'",
        success:function(msg){
            alert(msg);
        }
    });
})
</script>

PHP代碼:

<?php
// 函數(shù)判斷是否是utf8編碼
function is_utf8($string) {
    return preg_match('%^(?:
        [\x09\x0A\x0D\x20-\x7E]                   
        | [\xC2-\xDF][\x80-\xBF]             
        |  \xE0[\xA0-\xBF][\x80-\xBF]       
        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
        |  \xED[\x80-\x9F][\x80-\xBF]       
        |  \xF0[\x90-\xBF][\x80-\xBF]{2}    
        | [\xF1-\xF3][\x80-\xBF]{3}         
        |  \xF4[\x80-\x8F][\x80-\xBF]{2}  )*$%xs', $string);  
}
$name = $_GET['name'];
if(!is_utf8($name)) {
    $name = iconv("gb2312", "utf8", $name);
}

當(dāng)然,以上情況都是基于服務(wù)器端的編碼是utf8的情況下的。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)