Javascript 在文本区域中键入html时,如何呈现html?

Javascript 在文本区域中键入html时,如何呈现html?,javascript,html,Javascript,Html,我正在尝试按键入的方式呈现HTML。也就是说,用户在文本区域中键入HTML,然后(我认为使用javascript)在文本或另一个文本区域或窗口中的窗口中呈现HTML。否则,我必须让他们输入所有内容,然后单击预览按钮。获取文本区域的输入,并将其分配给文本区域按键上div标记的内部html。有些原因我不想实时执行,而是按照您的说明使用预览(可以是JavaScript或服务器端语言) 无意中,他们的代码可能会破坏您的页面(他们的代码中额外关闭的div会破坏您的页面) 他们的代码可能会故意破坏您的页面

我正在尝试按键入的方式呈现HTML。也就是说,用户在文本区域中键入HTML,然后(我认为使用javascript)在文本或另一个文本区域或窗口中的窗口中呈现HTML。否则,我必须让他们输入所有内容,然后单击预览按钮。

获取文本区域的输入,并将其分配给文本区域按键上div标记的内部html。

有些原因我不想实时执行,而是按照您的说明使用预览(可以是JavaScript或服务器端语言)

  • 无意中,他们的代码可能会破坏您的页面(他们的代码中额外关闭的div会破坏您的页面)
  • 他们的代码可能会故意破坏您的页面
  • 您必须清理它们的标记和类名
  • 你应该考虑不允许脚本
  • 您需要捕获HTML编码的条目以及标记或其他输入格式
  • 关于谁在什么页面上输入什么代码以及在哪里输入的安全性
  • XSS发布(使工具在其他站点上成为攻击向量)

  • 虽然这是一个很酷的特性,但在你开始之前,可能会有一些需要考虑的事情。这个列表对于我来说已经足够避免实时的事情了。

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

    我有一个工作示例:

    您可以在文本区域(第一个字段)中输入消息。 消息被转换。一大串bbcode被转换成安全的HTML,坏的HTML被删除,好的HTML被保留,JS事件属性被删除。 输出消息打印在一个div(第二个字段)中,这使得它能够实时呈现所有HTML。 然后,您可以对输出执行所需的操作(编辑输出除外)

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

    第二个注意事项是,我们在其中编写答案的编辑工具具有完全相同的基础


    Youri

    听起来很酷,但也充满了安全风险、开发困难和全面的PITA。在更新Div之前,对它运行一些白名单。我不能让他们在客户端查看它,然后,当他们都完成后,让他们发布它,然后确保它是干净的吗?但是如果你正在修改DOM,损害可以当场造成。