Как получить XML DOM в IE? - PullRequest
1 голос
/ 04 июня 2009

У меня есть форма HTML и iframe, как это:

<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. Мне нужно получить DOM этого XML-документа. Пока мой код выглядит так:

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

Это прекрасно работает в браузерах FireFox, Chrome и Opera. Но это не работает в IE 6 и 7. Насколько я понимаю, в IE я получаю DOM HTML-документа, который IE создает внутри для отображения подсветки синтаксиса для XML. Что мне нужно, так это получить базовый XML без изменений. Это достижимо в IE?


Есть веская причина придерживаться формы и фрейма, а не вызывать веб-сервис через AJAX. К сожалению, AJAX не подходит для меня в данном конкретном случае.

Ответы [ 2 ]

1 голос
/ 23 июня 2009

Нет, вы не можете получить неизмененный XML таким способом с IE. MIME-фильтр «симпатичного принтера» XML заменит исходный XML-код, который видит IE, на HTML-код, отображаемый пользователем.

Использование XHR и т. П. - единственный реальный обходной путь.

0 голосов
/ 11 января 2010

Попробуйте связать XML, идущий в IFRAME, с (даже не существующим) CSS. Это должно помешать IE красиво печатать XML. Тогда contentWindow.document должен содержать DOM полученного XML. Или вы можете извлечь содержимое документа как строку и проанализировать строку как XML. CSS связан с XML с помощью инструкции обработки следующим образом:

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

...