首页 > 解决方案 > 为什么在 domready 上的 document.write(x) 中没有显示字符串末尾的实体转义?

问题描述

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>网页上不显示?

标签: javascriptjquerydocument.writehtml-escape-characters

解决方案


我在 Chrome 69 (Windows) 上也有同样的症状。

按照MDNdocument.close()的建议,通过添加调用来修复它:

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>


推荐阅读