过去可能
document.open(mimetype)
在Netscape中的iframe上,但是现代浏览器不支持这个(而且Netscape也不支持XML)。
在许多浏览器中,可以设置iframe
src
到A
data URI
例如:
data:text/xml,%3Celement%3Ehello%3C/element%3E
,只要文档不太长。但这在IE中不起作用。因此,您至少需要一个返回服务器的备份计划:
<?php
header('Content-Type: text/xml');
echo($_REQUEST('xml'));
?>
然后,如果XML足够短以适合于URI,则可以通过以下方式设置其SRC:
iframe.src= 'http://www.example.com/echoxml.php?xml='+encodeURIComponent(xml);
如果XML可能很长,则需要使用POST请求,这意味着表单提交:
var idoc= iframe.contentDocument || iframe.contentWindow.document; // IE compat
idoc.open();
idoc.write('<form method="post" action="http://www.example.com/echoxml.php">');
idoc.write(' <textarea name="xml"></textarea>');
idoc.write('</form>');
idoc.close();
idoc.getElementsByTagName('textarea')[0].value= xml;
idoc.getElementsByTagName('form')[0].submit();
这一切值得吗?除非您使用XSL,否则在大多数浏览器中使用的非样式化XML视图可能会非常差。在完全不显示XML的较旧/较简单的浏览器中,系统会提示您下载XML文件。
允许任何人向您的安全上下文中注入任何XML内容都是危险的。如果他们制作了一个包含XHTML脚本内容的返回文档,那么您就容易受到跨站点脚本攻击。