2013-10-31 92 views
0
var _xhr2 = new XMLHttpRequest(); 

_xhr2.upload.addEventListener('progress', function(e){ //#1 
    console.log('progress');  
}, false); 

_xhr2.upload.onprogress = function(e){ //#2 
    console.log('progress'); 
}; 

_xhr2.open('POST', '/fileupload'); 
_xhr2.send(formData); 

有人能解釋一下#1#2之間的區別。哪一個比另一個更受歡迎?因爲兩者都似乎工作。XHR2 addEventListener vs屬性

,我這麼問是因爲我玩弄了HTML5的FileReader + XHR2上傳了一下,在​​的MDN例子情況下使用#2,而XMLHttpRequest()使用#1

+0

[addEventListener vs onclick](http://stackoverflow.com/questions/6348494/addeventlistener-vs-onclick) – lonesomeday

回答

1

好吧,聲明onprogress屬性會覆蓋綁定到它的以前的處理程序,這很明顯,這不是問題,因爲你只是將它綁定到新的對象實例。

我認爲唯一的區別是IE兼容性。 IE9 +支持addEventListener,而IE5.5 +支持onprogress屬性(以及其他on...屬性)。


舊版本的IE 9相比使用attachEvent代替addEventListener

+0

XHR2和FileReader僅在IE10中受支持。我應該詳細闡述一下,因爲我很好奇的是,如果出現任何性能差異,並且如果有任何理由解除事件監聽者的話,那麼我會去#1。有關於此的任何信息? – Johan

+1

@Johan,我不知道哪一個人有更好的表現,也沒有值得在工作完成後解除事件的綁定。就我個人而言,在性能上沒有差別。我無法進一步幫助你,儘管我所能做的就是(強烈)向你推薦標記爲可能重複的答案。從未見過如此高度發達的答案。我希望它能幫助你。 – matewka