繁体   English   中英

如何在输入textarea时呈现html?

[英]How can you render html as it is typed into a textarea?

我正在尝试在键入时呈现HTML。 也就是说,用户将HTML键入到textarea中,并在Literal或其他textarea或窗口内的窗口中呈现(使用javascript,我认为)。 否则,我必须让它们全部输入,然后单击预览按钮。

有些原因我不想实时做,而是用你预测的预览(无论是JavaScript还是服务器端语言)

  1. 无意中,他们的代码可能会破坏您的页面(代码中额外关闭的div会打破您的代码)
  2. 故意,他们的代码可能会破坏您的页面
  3. 您必须清理其标签和类名称
  4. 你应该考虑不允许脚本
  5. 您需要陷阱HTML编码条目以及标签或其他输入格式
  6. 关于谁在哪个页面和哪里输入什么代码的安全性
  7. XSS问题(使您的工具成为其他网站上的攻击媒介)

因此,虽然这是一个很酷的功能,但在你接受它之前,可能只需要考虑一些事情。 这份清单一直足以让我避开实时的事情。

获取文本区域的输入并将其分配给文本区域的keyPress上的div标签的内部html。

我有一个工作的例子: http//www.galactic-warz.org/BBCodeTest.php

您可以在textarea(第一个字段)中输入消息。 消息被转换。 一个很大的BBCode列表被转换为SAFE HTML,删除了坏的HTML,保留了良好的HTML,删除了JS事件属性。 输出消息以div(第二个字段)打印,这使得它可以呈现所有HTML实时。 然后,您可以使用输出执行所需操作(编辑除外)。

这是非常安全的。 所有HTML输出都是安全的HTML,JS事件属性被删除,并且在输入时不会关闭div(或BBCode [/ div])。 最后一件事情是自动完成的,没有为此做过编码。

在第二次通知中,我们编写答案的编辑内容具有完全相同的基础...

尤里

一个更安全的解决方案是将表单中的所有数据发送到呈现html页面的服务器端脚本。 然后在单击预览按钮时在iframe中异步加载。 如果您选择在键入时执行此操作,则会有很多无用的往返服务器,更不用说影响历史堆栈的页面加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM