如何在javascript中使用.html()将html作为文本插入?(How to insert html as text using .html() in javascript?)

系统教程 行业动态 更新时间:2024-06-14 16:55:58
如何在javascript中使用.html()将html作为文本插入?(How to insert html as text using .html() in javascript?)

在我的javascript应用程序中,我使用以下代码插入用户消息:

var displayMessages = function(response, onBottom) { var user = GLOBAL_DATA.user; var acc = ''; for(var i=0; i<response.length; i+=1) { var obj = response[i]; var acc_temp = ""; acc_temp += '<div class="message ' + (obj['user_id']==user['id'] ? 'message-right' : 'message-left') + '">'; acc_temp += '<div>' + Autolinker.link($(obj['message']).text()) + '</div>'; if (obj['user_id']!=user['id']) { acc_temp += '<div class="message-details">' + obj['first_name'] + ' ' + obj['last_name'] + '</div>'; } acc_temp += '<div class="message-details">' + obj['date_sent'] + '</div>'; acc_temp += '</div>'; acc = acc_temp + acc; } addMessage(acc, onBottom); };

问题是,如果obj['message'] = "<script>alert(1);</script>"; 然后在屏幕上打印的是"alert(1);" 因为我使用.text() 。 如何使用脚本标记插入字符串,以使其看起来与页面上的字符串完全相同? 我不希望它被执行。

谢谢

In my javascript app, I insert a user message using the code:

var displayMessages = function(response, onBottom) { var user = GLOBAL_DATA.user; var acc = ''; for(var i=0; i<response.length; i+=1) { var obj = response[i]; var acc_temp = ""; acc_temp += '<div class="message ' + (obj['user_id']==user['id'] ? 'message-right' : 'message-left') + '">'; acc_temp += '<div>' + Autolinker.link($(obj['message']).text()) + '</div>'; if (obj['user_id']!=user['id']) { acc_temp += '<div class="message-details">' + obj['first_name'] + ' ' + obj['last_name'] + '</div>'; } acc_temp += '<div class="message-details">' + obj['date_sent'] + '</div>'; acc_temp += '</div>'; acc = acc_temp + acc; } addMessage(acc, onBottom); };

The problem is that, if obj['message'] = "<script>alert(1);</script>"; then what gets printed on the screen is "alert(1);" because I use .text(). How can I insert the string with the script tags, so that it looks exactly like that on the page? I don't want it to get executed.

Thanks

最满意答案

我使用这些辅助函数。

function htmlEncode(value){ return $('<div/>').text(value).html(); } function htmlDecode(value){ return $('<div/>').html(value).text(); }

如果你不确定它们没有任何可执行代码,我也会逃避其他变量。

I use these helper functions.

function htmlEncode(value){ return $('<div/>').text(value).html(); } function htmlDecode(value){ return $('<div/>').html(value).text(); }

I would escape the other variables as well if you are not sure that they will not have any executable code.

更多推荐

本文发布于:2023-04-10 11:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/dzcp/7a8cba4a125e51d440a19526225f58b1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文本   如何在   javascript   html   insert

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!