1

다음과 같은 HTML 양식과 iframe이 있습니다.IE에서 XML DOM을 검색하는 방법은 무엇입니까?

<form id="frmUpload" target="ifrTarget" action='http://....asmx/SampleMethod'> 
    <input name="title" /><br /> 
    ... 
    <input type="submit"/> 
</form> 
<iframe id="ifrTarget" name="ifrTarget"></iframe> 

동작 특성이 내 ASP.NET 웹 서비스를 가리 킵니다. 양식이 제출되면 IFRAME은 결과 XML로 채워집니다. 이 XML 문서의 DOM을 가져와야합니다. 지금까지 내 코드는 다음과 같습니다.

var iframe = document.getElementById("ifrTarget"); 
var root = iframe.contentWindow.document.documentElement; 

이것은 FireFox, Chrome 및 Opera 브라우저에서 완벽하게 작동합니다. 그러나 그것은 IE 6 &에서 작동하지 않습니다. 7. 내가 이해하는 한, IE에서 XML에 대한 구문 강조 표시를 위해 IE가 내부적으로 빌드하는 HTML 문서의 DOM을 얻습니다. 필요한 것은 기본 XML을 수정하지 않고 얻는 것입니다. 그것은 IE에서 성취 할 수 있습니까?


AJAX를 통해 웹 서비스를 호출하는 대신 폼 및 iframe을 사용하는 것이 좋습니다. 불행히도 AJAX는이 특별한 경우에 나를위한 옵션이 아닙니다.

+0

왜 AJAX를 사용할 수 없는지 설명해 주시겠습니까? –

답변

1

아니요, IE에서는 이러한 방식으로 수정되지 않은 XML을 가져올 수 없습니다. XML "예쁜 프린터"MIME 필터는 Internet Explorer에서 볼 수있는 XML 소스를 사용자가 표시 한 HTML로 바꿉니다.

XHR 등을 사용하는 것이 유일한 실제 해결 방법입니다.

0

IFRAME으로가는 XML을 (심지어 존재하지 않는) CSS와 연결해보십시오. 이것은 IE가 XML을 인쇄하는 것을 방지해야합니다. 그런 다음 contentWindow.document에 수신 된 XML의 DOM이 있어야합니다. 또는 문서 내용을 문자열로 검색하고 문자열을 XML로 파싱 할 수 있습니다. CSS는 다음과 같이 명령어를 처리하여 XML과 연관됩니다.

<? xml-stylesheet href = "nonexistent.css"type = "text/css"? >