我使用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>
答案 0 :(得分:4)
您应该将参数拖放到open(),因为它在其他浏览器中不受支持,并且使用'<PLAINTEXT>'
将参数添加到第一个write()前面,这是一个超出标签的深度标签。 HTML历史记录完全符合您的要求(它没有结束标记。)
答案 1 :(得分:0)
您需要在内容周围使用<pre>
标记,以使其按照您希望的方式呈现。浏览器仍然会将您正在编写代码的文档视为HTML文档。 <pre>
标记会告诉浏览器将内容呈现为预格式化的文本,该文本将支持所有换行符和空白字符。