在webkit中忽略document.open(“text / plain”)格式(safari,chrome)

时间:2011-09-07 18:19:39

标签: javascript google-chrome safari webkit

我使用document.open(“text / plain”)和document.write()从JavaScript创建页面。要渲染的文本是多行制表符分隔文本。在Chrome 13.0.782.220 m和Safari 5.0.5中,它似乎呈现为text / html,忽略了open()调用中的编码规范。通过说它似乎呈现为HTML,我的意思是每个空格实例已被单个空格字符替换。在Firefox 3.6,Opera 11.51和Internet Explorer 8中,这正确呈现。这些结果在Windows和Mac OS / X中是一致的。

我用[chrome] + text / plain,[safari] + text / plain和[webkit] + text / plain搜索了stackoverflow,并且没有看到命中。我还在chrome和webkit bug报告网站中搜索了text / plain,并且没有看到类似的报告。

是否有其他人遇到此问题,或者对如何在基于webkit的浏览器上正确呈现数据提出任何建议?

此问题的简单演示页是:

<html><head>
<script type="text/javascript">
    function displayInNewWindow() {
        var win;
        var doc;
        win = window.open("", "WINDOWID");
        doc = win.document;
        doc.open("text/plain");
        doc.write("Line1\tField2\tField3\nLine2\tField2\tField3\n");
        doc.close();
    }
</script>
</head>
<body>
    <script type="text/javascript">displayInNewWindow();</script>
    <p>We're here!</p>
</body>

2 个答案:

答案 0 :(得分:4)

您应该将参数拖放到open(),因为它在其他浏览器中不受支持,并且使用'<PLAINTEXT>'将参数添加到第一个write()前面,这是一个超出标签的深度标签。 HTML历史记录完全符合您的要求(它没有结束标记。)

答案 1 :(得分:0)

您需要在内容周围使用<pre>标记,以使其按照您希望的方式呈现。浏览器仍然会将您正在编写代码的文档视为HTML文档。 <pre>标记会告诉浏览器将内容呈现为预格式化的文本,该文本将支持所有换行符和空白字符。