gpt4 book ai didi

jquery - 如何让 $.text() 换行,或者如何使 $.append() 免受 HTML 影响?

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:09 28 4
gpt4 key购买 nike

我有一个聊天窗口(使用 <div> )有时需要获取多行条目。到现在为止,我只是简单地替换了传入的 \n<br>并显示带有 .append() 的文本.不幸的是,我发现留下一个裸体 .append()基于用户输入允许用户插入任意 HTML,然后将由浏览器执行。在将随机 StackOverflow 页面复制到它(以测试大量发送)时发现了这一点,其中是一个 <link>标记,这会立即导致浏览器尝试下载 CSS 文件。

更改此方法以使用 .text()解决了那个特定问题,但现在我无法显示换行符。 <br> s 以文字而不是 HTML 的形式出现,并且 \n似乎没有任何效果。

有什么建议吗?我应该使用 .append() 吗?但找到一些方法来转义除 <br> 之外的所有 HTML 标签?或者有没有办法将换行符插入 .text() ?还是我完全缺少第三种选择?

最佳答案

您可以使用 html()<br>只要您转义其他在 HTML 中可能特殊的字符。例如。

function encodeHTML(s) {
return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;');
}

$('#something').append(encodeHTML(userinput).replace(/\n/g, '<br>'));

您也可以考虑转向 \n\n进入段落分隔符。

另一种方法是继续使用 text()但设置一个 white-space: pre-wrap风格保持\n字符作为换行符

因为版本 8 之前的 IE 不支持这个,你需要一个后备样式来设置 white-space: pre; word-wrap: break-word;对于那个浏览器。其他较旧且晦涩的浏览器也可能不支持此功能。

关于jquery - 如何让 $.text() 换行,或者如何使 $.append() 免受 HTML 影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com