并非所有的瀏覽器都支持 Ajax。下面是一個(gè)支持 Ajax 的主流瀏覽器列表:
當(dāng)我們編寫(xiě)下一個(gè)應(yīng)用程序時(shí),要考慮那些不支持 Ajax 的瀏覽器。
注意:當(dāng)我們說(shuō)某個(gè)瀏覽器不支持 Ajax 時(shí),只是意味著該瀏覽器不支持創(chuàng)建 JavaScript 對(duì)象 XMLHttpRequest 對(duì)象。
讓我們的源代碼兼容瀏覽器最簡(jiǎn)單的方式就是在我們的 JavaScript 中使用 try..catch 塊。
<html>
<body>
<script language="javascript" type="text/javascript">
<!--
// 支持瀏覽器的源碼
function AjaxFunction(){
var AjaxRequest; // 緩存XHR對(duì)象便于 Ajax 使用
try{
// Opera 8.0+, Firefox, Safari
AjaxRequest = new XMLHttpRequest();
}catch (e){
// Internet Explorer Browsers
try{
AjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
AjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
// 錯(cuò)誤處理
alert("Your browser broke!");
return false;
}
}
}
}
//-->
</script>
<form name='myForm'>
Name: <input type='text' name='username' /> <br />
Time: <input type='text' name='time' />
</form>
</body>
</html>
在上面的 JavaScript 代碼中,我們?nèi)螄L試獲得 XMLHttpRequest 對(duì)象。下面是第一次嘗試:
AjaxRequest = new XMLHttpRequest();
這適用于 Opera 8.0+,F(xiàn)ireFox 和 Safari 瀏覽器。如果它失敗,接下來(lái)我們兩次嘗試針對(duì) IE 瀏覽器創(chuàng)建正確的對(duì)象:
AjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
AjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
如果它還是不工作,那么我們可能在使用一個(gè)不支持 XMLHttpRequest 的非常過(guò)時(shí)的瀏覽器,這也意味著它不支持 Ajax。
但最有可能的是,我們的 AjaxRequest 變量現(xiàn)在被設(shè)置為瀏覽器使用的 XMLHttpRequest 標(biāo)準(zhǔn)并可以開(kāi)始發(fā)送數(shù)據(jù)到服務(wù)器。下一章會(huì)解釋分步進(jìn)行的 Ajax 工作流。