【问题标题】:IE FileReader prints out "\n"IE FileReader 打印出“\n”
【发布时间】:2016-11-28 22:25:19
【问题描述】:

我有一个 XML 文件,我需要将其读入字符串并将该字符串传递给 DOMParser 对象。所有这些在 FF 和 Chrome 中都可以正常工作,但 IE 和往常一样复杂。

以这个 XML 结构为例:

<person>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
</person>

FireFox 和 Chrome 给我这个字符串:

"<person>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
</person>"

IE 给了我这个字符串:

"<person>\n <firstname>John</firstname>\n <lastname>Doe</lastname>\n </person>"

如您所见,IE 显式打印出 \n 并将所有内容打印在一行上。当我传递给 DOMParser 时,这会导致问题,因为它不知道如何处理 \n 字符。

我使用 FileReader() 读取文件,使用 DOMParser() 解析 FileReader 生成的字符串。

我不知道如何解决这个问题,有什么帮助吗?

【问题讨论】:

  • 这个错误听起来更像是在 DOMParser... 它应该毫无问题地接受\n,只是为了测试,你能尝试用\r\n 硬编码新行吗,我的虚拟机已关闭,但我想我记得这是 windows 编码新行的方式。
  • 您的评论让我弄乱了 IE 的输出,似乎它也转义了字符串,因此 person 标签上的属性也会被转义。而且无论我做什么,IE 似乎都会在我删除它的第二次立即应用它的所有格式。为什么微软总是要成为一个奇怪的人... ;l

标签: javascript internet-explorer internet-explorer-11 microsoft-edge


【解决方案1】:

您的字符串本身仍然包含 \n 字符,唯一的区别是 IE 将它们显示为原始字符,而 Chrome 和 Firefox 将它们显示为换行符。

如果您在 Chrome 或 Firefox 中打开控制台并输入 "a\nb",您将获得两行不同的输出。字符串的length仍然是3个字符,但是浏览器控制台会将换行符转换成换行符。

如果这确实是个问题,那么您总是可以在字符串上使用replace() 来去除任何换行符:

"<person>\n ... \n </person>".replace(/\n/g, "")

【讨论】:

  • 你是对的。 IE 调试器显示它们是原始的,但如果您使用 console.log 或其他方法将其打印出来,它不会将它们打印出来。该问题似乎与 DOMParser 有关,但我只收到非常有用的错误消息“未指定错误”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
相关资源
最近更新 更多