我有一个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>
Action属性指向我的ASP.NET Web服务。提交表单时,IFRAME将填充生成的XML。我需要检索此XML文档的DOM。到目前为止,我的代码看起来像这样:
var iframe = document.getElementById("ifrTarget");
var root = iframe.contentWindow.document.documentElement;
这适用于FireFox,Chrome和Opera浏览器。但它在IE 6&amp; 7.据我所知,在IE中,我获取了IE内部构建的HTML文档的DOM,以显示XML的语法高亮。我需要的是不修改底层XML。在IE中可以实现吗?
有充分理由坚持使用表单和iframe,而不是通过AJAX调用Web服务。不幸的是,在这种特殊情况下,AJAX不适合我。
答案 0 :(得分:1)
不,您无法使用IE以这种方式获取未修改的XML。 XML“漂亮的打印机”MIME过滤器将替换IE所见的XML源,并显示用户的HTML。
使用XHR等是唯一真正的解决方法。
答案 1 :(得分:0)
尝试将转到IFRAME的XML与(甚至不存在的)CSS相关联。这应该可以防止IE打印XML。然后contentWindow.document应包含接收到的XML的DOM。或者您可能希望将文档内容检索为字符串并将字符串解析为XML。 CSS通过处理指令与XML相关联,如下所示:
&lt;?xml-stylesheet href =“nonexistent.css”type =“text / css”?&gt;