另外,如果你有瀏覽器類型/版本控制,您可以使用傳遞給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事件列表。
你說得很好。 onreadystatechange會在每次狀態變化時觸發,但addEventListener偵聽特定的事件(loadend,load,error,abort)。 –