3

이것은 부분적으로 회피 요청이며 일부는 Internet Explorer의 프로토 타입 구현에 여전히 결함이 있음을 알리기위한 시도입니다.Internet Explorer 8 프로토 타입 및 XMLHttpRequest

다음 코드는 Internet Explorer에서 작동하지 않습니다.

XMLHttpRequest.prototype.old = XMLHttpRequest.prototype.open; 
var x = new XMLHttpRequest(); 
x.old("POST", "test", false); 

IE 8 베타 및 모든 이전 버전의 경우 XMLHttpRequest.prototype 속성이 처음에는 존재하지 않았습니다. IE8에서는 존재하지만 잘못된 프로 시저 호출 또는 인수 오류가 발생합니다. Internet Explorer는 장식을 좋아하지 않습니다.

누구나 해결 방법을 알고 있습니까?

업데이트는 :

내가 새로운 기능과 생성자와 XMLHttpRequest의 전체를 무시하고 XMLHttpRequest.js ALA 래퍼 스크립트를 만들 수 있다고 지적하고있다. 프로토 타입 방법은 훨씬 더 짧기 때문에 IE가 아닌 브라우저에서도이 방법을 사용하는 편이 더 좋습니다.

+0

당신이 Microsoft에이를보고 다음과 같이

나는 나의 GET 요청을 코딩? –

+0

아직 없습니다. Microsoft의 버그보고 채널을 파악할 때 인내심을 가지고 있는지 확신 할 수 없습니다. –

+0

나는 서두르지 않을 것이다. 나는 코멘트없이 닫힌 보고서를 보았다고 생각한다. – Ross

답변

2

IE 8은 XMLHttpRequest를 인식하지만 기능은 아닙니다. 활성 X 개체가 여전히 작동하는 것 같습니다. window.XMLHtppRequest의 존재 여부를 테스트하는 대신 typeof window.XMLHtppRequest를 테스트합니다. 좋아 보인다.

FG.ajax.getxhr = function(){ 
var xhr; 
if (typeof window.XMLHttpRequest === 'function') { 
    xhr = XMLHttpRequest(); 
} 
else { 
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
return xhr;