在网页中读取 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>
    &lt;div&gt;Hello world! I love M&amp;M's candy.&lt;/div&gt;
</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 时如何阻止浏览器对 <、> 和 & 进行编码?的主要内容,如果未能解决你的问题,请参考以下文章

请问高手,html如何获取iframe中嵌套的页面元素值

js如何读取本地txt文件中的内容

javascript可以读取txt.请问javascript如何读取本地的TXT文件,然后将内容存入1个数组中?

读取时如何使用.txt中存储的数据

用Python怎么得到网页中iframe的源代码

C语言从TXT文档中读取一组数字时如何判断已经读到最后一个数字?