2009-10-21 81 views
5

Microsoft最終在Internet Explorer 7中添加了本機XMLHttpRequest對象,但是我發現它可以在Internet選項對話框中禁用。那麼使用XMLHttpRequest()與ActiveXObject(「Microsoft.XMLHTTP」)有什麼好處呢?XMLHttpRequest()vs ActiveXObject(「Microsoft.XMLHTTP」) - 有什麼意義?

如果它可以被禁用,這意味着我們必須永遠保持我們的瀏覽器兼容性檢查,不是嗎? XMLHttpRequest()初始化會比ActiveXObject(「Microsoft.XMLHTTP」)更快嗎?還是什麼?爲什麼微軟會添加它並使其成爲可選項?

+0

可能是針對Firefox特定頁面的兼容性? – Xinus 2009-10-21 12:16:51

+0

@Rubens Farias,它的目的是。我只使用IE7 +(沒有其他瀏覽器),所以我真的想知道我是否應該檢查XMLHttpRequest或直接使用ActiveXObject() – 2009-10-21 12:24:26

+0

如果您只使用IE7 +,則可以直接使用XmlHttpRequest,只需捕獲安全異常在try/catch中,這意味着它直接或間接被禁用。如果您選擇ActiveX方法,請注意內部實現是非常不同的(與加載的DOM不兼容,需要轉換爲/)和較慢,並且經常禁用ActiveX。 – Abel 2009-10-21 12:30:12

回答

5

該ActiveXObject也可以被禁用。請注意,其他瀏覽器也可以禁用此設置和其他設置。這不是關於瀏覽器兼容性,而是關於用戶偏好。用戶可以允許/禁止跨域請求,可以允許/禁止腳本,可以允許Flash或不允許使用等。

當用戶禁用時,您必須始終檢查您的頁面是否仍然平穩運行(或正常退後)某些瀏覽器的功能,你需要。

好消息是:它默認啓用,大多數用戶都會啓用它。

更新:在默認情況下,腳本和外部請求(即document()xsl:include在XML XSLT或外部實體)不被XmlHttpRequest -retrieved對象的支持,必須明確啓用。這與非IE瀏覽器不同,其中允許來自XHR的文檔的外部請求(或不存在,如在Safari和Chrome中)。

+1

'好消息是:它默認啓用,大多數用戶都會啓用它。「 - 這就是爲什麼我問這個問題,我發現我的一個用戶沒有打開它,導致應用程序失敗。直到那時我才意識到它可能會被禁用。 – 2009-10-21 12:29:46

2

這是一個猜測,但我會假設他們允許它被禁用,因爲它們允許JavaScript被禁用。有些人認爲風險(隱私,安全,任何)大於好處,因此希望它被禁用。

+0

我可以理解這一點,如果它與ActiveXObject一起被禁用。但是你實際上可以禁用XMLHttpRequest並仍然使用ActiveXObject(「Microsoft.XMLHttpRequest」)。 – 2009-10-21 12:27:01