1

我想要预览一些带有 HTML 标签的文本,然后将文本存储在数据库中的功能。我知道出于 XSS 安全原因,在数据库中允许 HTML 不是一个好主意。有什么方法可以实现这一目标?

我想要一个类似于我们在 stackoverflow 中的功能,我们可以在其中格式化我们的源代码。谢谢。

4

2 回答 2

6

推荐方式:

为您的 html 页面上的表单创建一个javascript 事件侦听器。通过 ajax将输入提交到您的 rails 应用程序,输入将在其中呈现(例如,由稍后将呈现数据库输出的相同帮助程序)。

使用像RedCloth/Textile这样的标记语言来避免 XSS。它也更容易为您的用户输入/理解!

您要求的方式:

创建一个 javascript 事件侦听器并将表单/输入的内容写入另一个 div。

您需要的 javascript 取决于您使用的库(例如,原型或 jQuery)。

例子:

假设您有一个带有 textarea、<textarea id="text"></textarea>和一个预览区域 div的表单,<div id="preview"></div>并且您正在使用 Prototype:

document.observe("dom:loaded", function() {
  new Form.Element.Observer('text', 0.25, 
    function () {
      $('preview').update($F('text'));
    }
  );
}

这将每 250 毫秒检查一次 textarea 的更改并将其输入复制到预览 div 中。

实际上,您只需要调用函数内部的代码(以.document.observe开头)将在浏览器完成构建 DOM 树后调用此代码。new Form.Element.Observer...document.observe

于 2011-03-29T16:42:42.053 回答
1

You could also consider using something like textile or markdown, which are ways to achieve HTML markup with plain text.

于 2011-03-29T17:20:25.163 回答