Как запретить браузеру кодировать <,>и & при чтении файла iframe TXT на веб-странице?

Я заметил, что браузеры будут кодировать левую скобку <, правую скобку>и амперсанд & в свои соответствующие коды (& lt; /& gt; /& amp;) при чтении innerHTML исходного iframe TXT- файла. Как я могу предотвратить это? 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.

2 ответа

Решение

Вместо извлечения .innerHTML, получить .textContent, Это должно вернуть только читаемый человеком текст в дереве элементов в удобочитаемой форме. Вы можете попробовать это на этой странице, изучив один из ваших примеров HTML в вашем вопросе и написав $0.textContent в консоли разработчика.

Браузер преобразует ваш текстовый файл в HTML. Если вы изучите DOM https://wordpress.org/plugins/about/readme.txt, вы увидите, что это HTML, а не просто текстовый файл, когда он отображается.

Как и предполагали другие, вы можете просто получить MyIframe.contentWindow.document.textContent который будет декодировать любые специальные символы HTML (теперь, когда вы знаете, браузер автоматически его кодирует).

Другие вопросы по тегам