我知道我可以使用$.html
来设置某些内容的超文本标记语言内容,使用$.text
来设置内容(并且这样做可以避开超文本标记语言)。
不幸的是,我使用的是$.append
,它无法避开超文本标记语言。
我得到了类似这样的东西:
function onTimer() {
$.getJSON(url, function(data) {
$.each(data, function(i, item) {
$('#messages').append(item);
}
}
}
...where url返回一个字符串数组。不幸的是,如果其中一个字符串是(例如) <script>alert('Hello')</script>
,它就会被执行。
我如何让它转义HTML?
发布于 2009-06-03 12:29:16
你要追加一个已经有内容的元素吗?或者你是在追加之后再添加内容?无论哪种方式,您仍然需要执行.text(...)在那个元素上。
如果使用append并将HTML作为参数传递,请先尝试创建元素,然后将其传递给append。
例如:
$('<div/>').text('your content here').appendTo('div#someid')
发布于 2013-12-05 05:44:39
如果你真的想让jQuery将一些文本转义为HTML片段,并且不想自己直接接触document
,下面的纯jQuery可以为你将文本转义为HTML (但仅在HTML上下文中):
jQuery('<p/>').text('v & M_FLAG == M_FLAG').html()
这可以用来非常低效地追加文本:
jQuery('#message').append(jQuery('<p/>').text(item).html());
不会插入额外的<p/>
元素,因为.html()
返回元素的HTML格式的内容,不包括元素本身。
基于jQuery缺乏一种内置的实例化文本节点的方法,我认为jQuery的作者希望用户直接使用earlier answer中所示的document.createTextNode()
。
https://stackoverflow.com/questions/944436
复制相似问题