2013-03-17 3 views
5

브라우저에 따라 어떤 개체를 사용해야하는지 결정하고 싶습니다. IE < 10의 경우 XDomainRequest이어야하며 나머지는 XMLHttpRequest입니다. IE10은 간 리소스 공유를 지원하고 있기 때문에XMLHttpRequest 또는 XDomainRequest를 사용할지를 결정하는 방법은 무엇입니까?

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

, 그것은 그것으로 XMLHttpRequest 객체를 사용하는 것이 좋습니다. 이 코드는 더 이상 잘 작동하지 않을 것입니다. (IE10이 여전히 XDomainRequest에 대한 지원을하고 있다고 가정하고, 틀렸다고 가정 해 봅니다. 테스트 할 수 없습니다). 브라우저를 직접 확인하는 것이 사물을 결정하는 가장 안전한 방법은 아닙니다. 그래서 내 질문에 어떤 개체를 사용해야하는지 결정하는 가장 좋은 방법은 무엇입니까? 나는 순수 JS (비 jQuery) 솔루션을 찾고있다.

+0

XMLHttpRequest를 사용해보십시오. 예를 들어 try/catch에서 실패하면 XdomainRequest를 사용하십시오. 하나의 질문이지만 다른 도메인에 요청을 보내시겠습니까? – apelsinapa

+0

그래, 그 이유는 내가 당신의 아이디어를 사용할 수없는 이유입니다. IE <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이 XHR2를 지원하지 않는 새로 만든 XHR뿐만 IE 버전에서 빈 문자열의 responseType을 가지고 있기 때문에 그것은 작동, 그것은 정의되지 않은 것.

이 길을가는 경우 XDR이 XHR보다 디버그가 훨씬 어렵다는 점을 명심하십시오. 문제가 발생하면 정보가 줄어들고 이전 XmlHttpRequest 구현에서도 잘 작동하는 일부 기능이 작동하지 않습니다 전혀 XDR에서.

브라우저가 XHR2를 지원하지 않고 XDR을 지원하더라도 페이지를로드 할 때와 동일한 호스트/포트에서 URL을 요청할 때 XHR을 사용하려고합니다.

+1

이 답변을 받아 들여야합니다. 왜 지금까지 적어도 upvoted되지 않았습니다? –

관련 문제