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自有物件為輔。」
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。