Почему экранирование сущности в конце строки не отображается для document.write (x) на domready? - PullRequest
0 голосов
/ 11 сентября 2018

var target = '<p><img alt=\"\" src=\"upfiles\/54591303758197437.jpg\" \/><\/p>'
$(function(){
    var x=$('<div/>').text(target).html();
    alert(x);
    document.write(x)
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Я показываю экранированную строку, содержащую HTML-теги, и пишу на веб-странице.
Экранированная строка в окне предупреждения правильная, но после закрытия окна предупреждения вы можете толькосм. ( скриншот ):
<p><img alt="" src="upfiles/54591303758197437.jpg" /></p

Где последний >?

Почему <p><img alt="" src="upfiles/54591303758197437.jpg" /></p> не будет отображаться на веб-странице?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Правильный и официально задокументированный ответ на эту загадочную загадку содержится в @ ответе PeterB . Для тех, кто ищет быстрое решение, просто добавьте пробел в конце строки, и вы вернетесь к здравому смыслу.

document.write(x+' ')
0 голосов
/ 11 сентября 2018

У меня был такой же симптом на Chrome 69 (Windows).

Удалось исправить это, добавив вызов document.close(), как рекомендовано MDN :

target = '<p><img alt=\"\" src=\"upfiles\/54591303758197437.jpg\" \/><\/p>'
$(function(){
    x=$('<div/>').text(target).html();
    alert(x);
    document.write(x);
    document.close();
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
...