在网页中读取TXT文件iframe时,如何阻止浏览器对<、>、&进行编码?

How to stop browser from encoding <, >, and & when reading a TXT file iframe in Web page?

我注意到浏览器在读取 [= 的内部 HTML 时会将左括号 <、右括号 > 和符号 & 编码为各自的代码 (</>/&) 28=]TXT-文件源 iframe。我该如何阻止这种情况发生?内部HTML 也将被包装在

 标签中。

例如,假设我在 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。

不检索 .innerHTML,而是检索 .textContent。这应该 return 只有元素树中人类可读的文本,以人类可读的形式。您可以在此页面上通过检查问题中的一个 HTML 示例并在开发人员控制台中写入 [=12=].textContent 来尝试。

浏览器将您的文本文件转换为 HTML。如果您检查 https://wordpress.org/plugins/about/readme.txt 的 DOM,您会发现它是 HTML,而不仅仅是呈现它的纯文本文件。

正如其他人所建议的,您可以只检索 MyIframe.contentWindow.document.textContent,它将解码任何 HTML 特殊字符(现在您知道浏览器会自动对其进行编码)。