回答

5

首選項是瀏覽器兼容性。來自MSN上的XMLHttpRequest API文檔。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Properties

onreadystatechangeXMLHttpRequest實例的屬性在所有瀏覽器的支持。

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#Events

更多最新的瀏覽器,包括Firefox,還支持收聽通過標準的API addEventListenerXMLHttpRequest事件除了on*屬性設置爲一個處理函數。

由於Google Apps腳本Web應用程序很快將只支持現代瀏覽器(如本地和模擬模式貶值),你可以使用。

1

另外,如果你有瀏覽器類型/版本控制,您可以使用傳遞給onreadystatechange的funcion對象做了填充工具:

var oReq = new XMLHttpRequest(); 
// This part for modern browsers 
oReq.addEventListener("progress", updateProgress, false); 
oReq.addEventListener("load", transferComplete, false); 
oReq.addEventListener("error", transferFailed, false); 
oReq.addEventListener("abort", transferCanceled, false); 
// This part for old ones 
oReq.onreadystatechange = functionSwitch; 

凡functionSwitch將調用正確的函數(會的UpdateProgress,transferComplete之間選擇,...),所以避免了雙重代碼。

我見過使用Windows XP的人,可能任何addEventListener都不起作用。看看:addEventListener Compatibility。我沒有通過addEventListener找到特定的xmlhttprequest事件列表。