2011-08-07 14 views
9

readystatechangeXMLHttpRequest वस्तुओं के लिए एक मानक घटना है, और इसलिए या तो साथ हीपुरानी शैली की संपत्ति बनाम addEventListener का उपयोग कर readystatechange?

r.onreadystatechange = function() { ... }; 

का उपयोग कर

r.addEventListener('readystatechange', function() { ... }, false); 

हालांकि के रूप में कार्य घटना पर सुनने के लिए सक्षम होना चाहिए, बाद विधि केवल लगता है फ़ायरफ़ॉक्स और क्रोम में काम करें, लेकिन ओपेरा नहीं, जो कोई त्रुटि नहीं फेंकता है लेकिन इसका कोई प्रभाव नहीं पड़ता है। यह क्यों है, और यह भी सही व्यवहार है?

+1

यह कम से कम डब्ल्यू 3 सी स्पेक में परिभाषित किया गया है: http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

उत्तर

8

MDN docs on XMLHttpRequest विशेष रूप से readystatechange ईवेंट को बढ़ाने का उल्लेख नहीं करते हैं, लेकिन W3C docs इसकी आवश्यकता है।

सामान्य नियम "onxxx के साथ संयुक्त घटना xxx के लिए ईवेंट हैंडलर" का अर्थ यह होगा कि ओपेरा व्यवहार गलत है।

0

यह मेरे लिए काम किया।

xhr.addEventListener('readystatechange', evt => { 
    if (this.readyState == 4 && this.status == 200) { 
     console.log(this.responseText); 
     return this.responseText; 
    } 
}, false); 
संबंधित मुद्दे