首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用jQuery追加转义文本?

用jQuery追加转义文本?
EN

Stack Overflow用户
提问于 2009-06-03 12:25:21
回答 2查看 15.3K关注 0票数 21

我知道我可以使用$.html来设置某些内容的超文本标记语言内容,使用$.text来设置内容(并且这样做可以避开超文本标记语言)。

不幸的是,我使用的是$.append,它无法避开超文本标记语言。

我得到了类似这样的东西:

代码语言:javascript
复制
function onTimer() {
    $.getJSON(url, function(data) {
        $.each(data, function(i, item) {
           $('#messages').append(item);
        }
    }
}

...where url返回一个字符串数组。不幸的是,如果其中一个字符串是(例如) <script>alert('Hello')</script>,它就会被执行。

我如何让它转义HTML?

EN

回答 2

Stack Overflow用户

发布于 2009-06-03 12:29:16

你要追加一个已经有内容的元素吗?或者你是在追加之后再添加内容?无论哪种方式,您仍然需要执行.text(...)在那个元素上。

如果使用append并将HTML作为参数传递,请先尝试创建元素,然后将其传递给append。

例如:

代码语言:javascript
复制
$('<div/>').text('your content here').appendTo('div#someid')
票数 9
EN

Stack Overflow用户

发布于 2013-12-05 05:44:39

如果你真的想让jQuery将一些文本转义为HTML片段,并且不想自己直接接触document,下面的纯jQuery可以为你将文本转义为HTML (但仅在HTML上下文中):

代码语言:javascript
复制
jQuery('<p/>').text('v & M_FLAG == M_FLAG').html()

这可以用来非常低效地追加文本:

代码语言:javascript
复制
jQuery('#message').append(jQuery('<p/>').text(item).html());

不会插入额外的<p/>元素,因为.html()返回元素的HTML格式的内容,不包括元素本身。

基于jQuery缺乏一种内置的实例化文本节点的方法,我认为jQuery的作者希望用户直接使用earlier answer中所示的document.createTextNode()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/944436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档