如何在输入textarea时呈现html?

时间:2009-08-24 17:59:37

标签: javascript html

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

4 个答案:

答案 0 :(得分:8)

我不想实时做某些原因,而是在您注意时使用预览(无论是JavaScript还是服务器端语言)

  1. 无意中,他们的代码可能会破坏您的页面(代码中额外关闭的div会破坏您的页面)
  2. 故意,他们的代码可能会破坏您的网页
  3. 您必须清理其标签和类名
  4. 你应该考虑不允许脚本
  5. 您需要捕获HTML编码条目以及标签或其他输入格式
  6. 关于谁在哪个页面输入什么代码以及
  7. 的安全性
  8. XSS问题(使您的工具成为其他网站上的攻击媒介)
  9. 所以虽然这是一个很酷的功能,但在你接受它之前,可能只需要考虑一些事情。这个列表总是足以让我避免实时的事情。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

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

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

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

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

尤里

答案 3 :(得分:0)

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