2013-03-17 11 views
5

ब्राउज़र पर निर्भर करता है, मैं यह निर्धारित करना चाहता हूं कि किस वस्तु का उपयोग किया जाना चाहिए। आईई < 10 के लिए यह XMLHttpRequest के लिए XDomainRequest होना चाहिए।यह निर्धारित करने के लिए कि XMLHttpRequest या XDomainRequest का उपयोग करना है या नहीं?

if(window.XDomainRequest) //basically 'if IE' 
    //XDomainRequest 
else 
    //XMLHttpRequest 

के बाद से IE10 पार ओरिजिन रिसोर्स शेयरिंग समर्थन हासिल है, यह इसके साथ XMLHttpRequest वस्तु उपयोग करना बेहतर है। यह कोड अब ठीक काम नहीं करेगा (मुझे लगता है कि आईई 10 अभी भी XDomainRequest के लिए समर्थन है, अगर मुझे गलत लगता है तो मुझे सही करें, मैं इसका परीक्षण नहीं कर सकता)। ब्राउज़र को प्रत्यक्ष जांच करना चीजों को निर्धारित करने का सबसे सुरक्षित तरीका नहीं है। तो मेरा सवाल है, यह निर्धारित करने का सबसे अच्छा तरीका क्या है कि किस वस्तु का उपयोग किया जाना चाहिए? मैं शुद्ध जेएस (गैर-jQuery) समाधान की तलाश में हूं।

+0

XMLHttpRequest का उपयोग करने का प्रयास करें, और यदि यह कोशिश के लिए विफल रहता है उदाहरण के लिए XdomainRequest का उपयोग करें। एक सवाल हालांकि, क्या आप अन्य डोमेन के लिए अनुरोध भेजते हैं? – apelsinapa

+0

हां, यही कारण है कि मैं आपके विचार का उपयोग नहीं कर सकता - आईई <10 में 'XMLHttpRequest' ऑब्जेक्ट भी है, लेकिन इसका उपयोग विदेशी डोमेन का अनुरोध करने के लिए नहीं किया जा सकता है। – geehertush01

+2

क्या इससे आपकी मदद मिलती है? http://stackoverflow.com/questions/1641507/detect-browser-support-for-cross-domain-xmlhttprequests – apelsinapa

उत्तर

5

इस तरह मैं इसे करता हूं, लेकिन यह अच्छा नहीं है।

var useXDR = window.XDomainRequest && (window.XMLHttpRequest && new XMLHttpRequest().responseType === undefined); 

यह काम करता है क्योंकि IE10 एक नव निर्मित एक्सएचआर के लिए लेकिन IE के संस्करणों में रिक्त स्ट्रिंग है कि XHR2 का समर्थन नहीं करते की एक responseType है, यह अपरिभाषित है।

यदि आप इस सड़क पर जाते हैं, तो ध्यान रखें कि एक्सएचआरआर एक्सएचआर की तुलना में डीबग करने के लिए बहुत खराब है - यह कुछ गलत होने पर आपको कम जानकारी देता है, और कुछ विशेषताएं जो पुराने XmlHttpRequest कार्यान्वयन पर भी अच्छी तरह से काम करती हैं, काम नहीं करती हैं बिल्कुल एक्सडीआर पर।

भले ही आपका ब्राउज़र XHR2 का समर्थन नहीं करता है और एक्सडीआर का समर्थन करता है, फिर भी आप एक्सएचआर का उपयोग करना चाहेंगे जब आप उसी होस्ट/पोर्ट से यूआरएल का अनुरोध कर रहे हों क्योंकि आपका पृष्ठ लोड हो गया है।

+1

यह उत्तर स्वीकार किया जाना चाहिए। अब कम से कम क्यों नहीं उभरा है? –

संबंधित मुद्दे

 संबंधित मुद्दे