建立XMLHttpRequest物件注意事項

我在一些JavaScript教材或AJAX教材上,常常可以看到以下建議XMLHttpRequest物件的語法或函數:

var xmlHttp;
function createXMLHttpRequest(){
  if (window.ActiveXObject)
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else if (window.XMLHttpRequest)
    xmlHttp = new XMLHttpRequest();
}

這是非常安全的寫法,為了處理IE(6以下)與其他瀏覽器的相容性問題,在IE6以前,AJAX是由ActiveXObject來建立物件,但標準DOM是使用XMLHttpRequest物件來處理。以上這段createXMLHttpRequest()在任何支援AJAX瀏覽器執行起來,絕對不會有問題,我想也是因為沒有問題,所有大家就複製、貼上拿來用。

但我點不同的看法,我認為現在這個時期,應該把兩個if條件上下互換,

var xmlHttp;
function createXMLHttpRequest(){
  if (window.XMLHttpRequest) //支援原生型
    xmlHttp = new XMLHttpRequest();
  else if (window.ActiveXObject) //IE6以下
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

原因很簡單,目前IE7/8都已經支援標準DOM的XMLHttpRequest物件,所所我們在建立XMLHttpRequest物件時,應該以標準DOM的物件為主,以IE6(以下)的ActiveXObject自有物件為輔,一來可加速程式效能,二來這個function一樣是安全可靠。

我想除了一個例外,就是你現在的使用環境還是以IE6為主,不然我們在處理瀏覽器相容性問題時,應該把握原則是:「以標準DOM元件為主,以IE自有物件為輔。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。