IE7+、Firefox、Opera、Chrome 和 Safari 都支持原生的 XHR 對象,在這些瀏覽器中建立 XHR 對象要像下面這樣使用 XMLHttpRequest 構造函數。瀏覽器
var xhr = new XMLHttpRequest();
假如你只想支持 IE7 及更高版本,那麼大可丟掉前面定義的那個函數,而只用原生的 XHR 實現。可是,若是你必須還要支持 IE 的早期版本,那麼則能夠在這個 createXHR()函數中加入對原生 XHR對象的支持。函數
function createXHR() { if (typeof XMLHttpRequest != "undefined") { return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { if (typeof arguments.callee.activeXString != "string") { var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"], i, len; for (i = 0, len = versions.length; i < len; i++) { try { new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { //跳過 } } } return new ActiveXObject(arguments.callee.activeXString); } else { throw new Error("No XHR object available."); } } var xhr = createXHR();
這個函數中新增的代碼首先檢測原生 XHR 對象是否存在,若是存在則返回它的新實例。若是原生對象不存在,則檢測ActiveX 對象。若是這兩種對象都不存在,就拋出一個錯誤。而後,就能夠使用下面的代碼在全部瀏覽器中建立 XHR 對象了。code
var xhr = createXHR();
因爲其餘瀏覽器中對 XHR 的實現與 IE 最先的實現是兼容的,所以就能夠在全部瀏覽器中都以相同方式使用上面建立的 xhr 對象。對象