【问题标题】:Avoiding HTML and Scripts tags renders避免 HTML 和 Scripts 标签呈现
【发布时间】:2013-03-16 19:39:27
【问题描述】:

我一直在聊天框工作,我使用 Node.js + socket.io 进行客户端-服务器通信,所以我无法执行 PHP 代码(我读过这是可能的,但不建议这样做,也很难达到)。一切正常,除非用户发送带有 HTML 或 Scripts 标签的消息。

我尝试使用在here 中找到的函数删除这些标签。它工作正常,但仅适用于 HTML 标签,然后我想:好吧,我可以先使用正则表达式删除 Script 标签。像这样的

.replace(/<script.*>.*<\/script>/ims, " ")

然后删除HTML标签,但我不确定这个方法是否是黑客证明,每条发送的消息都有很多过程。

是否有任何形式的附加 text$("#div").append(message); 而不呈现 HTML/JavaScript 代码? --- 按原样打印文本,例如在twitch.tv 中,如果您发送带有 HTML/JS/PHP 代码的消息,则消息会按照您键入的方式打印。

或者,有没有其他方法可以删除标签?

感谢您的宝贵时间。

【问题讨论】:

  • 可以调用.text()函数。
  • .append() 追加到 div。 .text() 将替换整个 div。 IMO 不是一个好主意

标签: javascript jquery node.js socket.io


【解决方案1】:

只需附加一个将消息设置为文本的 div。

$("#div").append( $("<div>").text(message) );

【讨论】:

  • 好主意,谢谢,它成功了。我认为这次我离最简单的解决方案很远
  • 我刚刚意识到,它会在我以这种方式执行的每个附加操作的末尾添加一个换行符。我该如何解决?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
相关资源
最近更新 更多