在网页中读取 TXT 文件 iframe 时如何阻止浏览器对 <、> 和 & 进行编码?
Posted
技术标签:
【中文标题】在网页中读取 TXT 文件 iframe 时如何阻止浏览器对 <、> 和 & 进行编码?【英文标题】:How to stop browser from encoding <, >, and & when reading a TXT file iframe in Web page? 【发布时间】:2017-01-02 10:10:07 【问题描述】:我注意到浏览器在读取 TXT 的 innerhtml 时会将左括号 和 & 符号 & 编码为各自的代码 (</>/&)-文件源 iframe。我该如何阻止这种情况发生? innerHTML 也将被包裹在
标记中。例如,假设我在 TXT(不是 HTML)文件中有以下内容:
<div> Hello world! I love M&M's candy. </div>
以下 iframe:
<iframe id="MyIframe" src="/hello.txt"></iframe>
还有以下 javascript:
var MyIframe = document.getElementById('MyIframe'); alert(MyIframe.contentWindow.document.innerHTML);
会弹出警告对话框,内容如下:
<pre> <div>Hello world! I love M&M's candy.</div> </pre>
如何阻止 JavaScript 对 TXT 文件的内容执行此操作?我只想要文件的原始、未编码的内容。
我不能使用 XMLHTTPRequest。
【问题讨论】:
您可以使用textContent
代替innerHTML
。当您检查网络日志时,服务器与文本文件一起发送的 Content-Type 是什么?
@Thomas "text/plain;charset=UTF-8"
【参考方案1】:
不是检索.innerHTML
,而是检索.textContent
。这应该仅以人类可读的形式返回元素树中的人类可读文本。您可以在此页面上通过检查您的问题中的一个 HTML 示例并在开发者控制台中写入 $0.textContent
来尝试一下。
【讨论】:
【参考方案2】:浏览器将您的文本文件转换为 HTML。如果您检查 https://wordpress.org/plugins/about/readme.txt 的 DOM,您会发现它是 HTML,而不仅仅是呈现时的纯文本文件。
正如其他人所建议的,您可以检索MyIframe.contentWindow.document.textContent
,它将解码任何 HTML 特殊字符(现在您知道浏览器会自动对其进行编码)。
【讨论】:
以上是关于在网页中读取 TXT 文件 iframe 时如何阻止浏览器对 <、> 和 & 进行编码?的主要内容,如果未能解决你的问题,请参考以下文章