将iframe的内容类型更改为xml以显示xml并通过DOM操作它

时间:2011-10-26 20:02:36

标签: javascript xml dom creation

我想使用JavaScript执行以下操作:

  1. 构建XML文件
  2. 在iframe中显示
  3. 通过DOM操作内容
  4. 我正在构建一个XML编辑器,但在iFrame中显示xml时遇到了问题。

    这是我目前正在使用的代码。

    function previewContent(what){//changes the content of an iFrame
        var tsite = document.getElementById('xmlinside').contentDocument;
        tsite.open();
        tsite.contentType('text/xml');
        tsite.writeln(what);
        tsite.close();
    }
    
    function makeXML(){
        var tester = '<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\
        <bookstore>test</bookstore>';
        previewContent(tester);
    }
    

    没有tsite.contentType('text/xml') iframe只显示test

    当我检查来源时,它仍然是HTML格式,添加的行<bookstore>test</bookstore>已添加,xml版本作为评论。

    我希望它显示为没有样式表的浏览器。我知道如果没有与之关联的格式,Safari会将其显示为原始xml文件。这将是完美的。它的内容类型是搞乱吗?这就是我尝试更改它的原因,但这是错误的代码。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

要记住的一些事情......

1。)如果是通过AJAX加载内容,则需要使用 application / xml 媒体类型/ mime,第一个元素必须有一个命名空间......

<div id="root_most_ajax_element" xmlns="http://www.w3.org/1999/xhtml">
<p>ajax content</p>
</div>

2.。)永远不要使用innerHTML(和框架,因为它们严重依赖于innerHTML),并且大多数情况下从不将它与加载AJAX加载的内容结合使用,专有的Microsoft方法没有正确注册DOM,所以你有点看到代码在那里,但它并不是真的存在,从而使你的代码在那时完全不可靠。如果使用JavaScript,则使用importNode方法加载加载了AJAX的内容(而不是使用iframe,您可以将其导入到除法元素中)。

3。)如果没有从同一个域加载,你将不会(也不应该)访问iframe的(X)HTML,所以如果它是从第三方网站加载的,请忘记它,否则你可以说操纵文本并发现他们的信息(电话,电子邮件等,如果他们登录的东西)。

如果您满足这三个条件,您应该能够使用代码,就像开始时没有涉及iframe或AJAX一样。