Как запретить браузеру кодировать <,>и & при чтении файла 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> <div>Hello world! I love M&M's candy.</div> </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 (теперь, когда вы знаете, браузер автоматически его кодирует).