var xmlHttp = new XMLHttpRequest object;。
這行簡單得多的代碼在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 AJax 的非 Microsoft 浏覽器中,創建了XMLHttpRequest對象。
結合起來
關鍵是要支持所有浏覽器。誰願意編寫一個只能用於 Internet Explorer 或者非 Microsoft 浏覽器的應用程序呢?或者更糟,要編寫一個應用程序兩次?當然不!因此代碼要同時支持 Internet Explorer 和非 Microsoft 浏覽器。清單 4 顯示了這樣的代碼。
清單 4. 以支持多種浏覽器的方式創建 XMLHttpRequest 對象
/* Create a new XMLHttpRequest object to talk to the Web server */
var XMLHttp = false;
/*@cc_on @*/
/*@if (@_JScript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
XMLHttp = false;
}
}
@end @*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
現在先不管那些注釋掉的奇怪符號,如@cc_on,這是特殊的 JavaScript 編譯器命令。這段代碼的核心分為三步:
1. 建立一個變量xmlHttp來引用即將創建的XMLHttpRequest對象。
2. 嘗試在 Microsoft 浏覽器中創建該對象:
o 嘗試使用Msxml2.XMLHTTP對象創建它。
o 如果失敗,再嘗試Microsoft.XMLHTTP對象。
3. 如果仍然沒有建立XMLHttp,則以非 Microsoft 的方式創建該對象。
最後,xmlHttp應該引用一個有效的XMLHttpRequest對象,無論運行什麼樣的浏覽器。