Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在webkit(safari,chrome)中忽略文档打开(“文本/普通”)格式_Javascript_Google Chrome_Safari_Webkit - Fatal编程技术网

Javascript 在webkit(safari,chrome)中忽略文档打开(“文本/普通”)格式

Javascript 在webkit(safari,chrome)中忽略文档打开(“文本/普通”)格式,javascript,google-chrome,safari,webkit,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,我的意思是空白的每个实例都被一个空格字符所取代。在Firefox3.6、Opera11.51和InternetExplorer8中,这种渲染是正确的。这些结

我正在使用document.open(“text/plain”)和document.write()从JavaScript创建一个页面。要呈现的文本是多行制表符分隔的文本。在Chrome 13.0.782.220 m和Safari 5.0.5中,它似乎被呈现为text/html,忽略了open()调用中的编码规范。通过说它似乎被呈现为HTML,我的意思是空白的每个实例都被一个空格字符所取代。在Firefox3.6、Opera11.51和InternetExplorer8中,这种渲染是正确的。这些结果在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>

函数displayInNewWindow(){
瓦尔温;
var-doc;
win=window.open(“,“WINDOWID”);
doc=win.document;
文件打开(“文本/普通”);
doc.write(“Line1\tField2\tField3\nLine2\tField2\tField3\n”);
doc.close();
}
displayInNewWindow();
我们到了


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

您应该将参数拖到open(),因为它在其他浏览器中不受支持,并在参数的第一个write()前面加上
'
,一个来自HTML历史深处的beyond弃用标记,它完全符合您的要求(它没有结束标记)。

谢谢,@DanShort。我知道html文本将保留格式。您是说指定文本/纯文本的内容类型不应该保留它吗?如果文本在文件中,它在所有浏览器中都会出现,而不是通过使用
document.open(“text/plain”)
document.write()
。经过再三考虑,我请求帮助正确呈现数据,而不是弄明白为什么Chrome和Safari不能以我认为应该的方式工作。你给了我我所需要的;谢谢接受。您必须记住,要呈现到的HTML文档仍然是
text/HTML
文档。因此,您引入的新文本将被呈现为与父文档相同的mime类型。只是Firefox选择将文本/普通内容包装在文档中。有趣的是,试图通过在纯文本中间插入
来欺骗它是行不通的——它正确地显示了所有文本。尝试显示一个以
{
开头的纯文本,然后看到Chrome喷嚏。奇怪的是,这是关于HTML的一些我从来都不知道的东西,我从90年代中期就开始从事这项业务。更重要的是,它确实起了作用。从2016年起,你不应该再使用“”,因为它被标记为过时,请参阅