保持用户生成的内容不会破坏布局?

时间:2011-05-02 15:53:34

标签: html user-input xml-namespaces

我有一个包含一些用户生成内容的网站,我希望能够将布局的标记和用户生成内容的标记分开,这样ug内容就无法打破网站布局

用户生成的内容是受信任的,因为它来自我网络上的一组已知用户,但是只允许一小部分html标签(p,ul / ol / li,em,strong和还有几个)。但是,用户生成的内容不能保证格式正确,而且我们遇到了一些格式错误的用户生成内容违反网站布局的情况。

我们正在与用户合作以保持内容格式良好,但与此同时,我正在尝试找到一种将内容与布局分开的好方法。我一直在寻找命名空间,但一直无法找到关于嵌入式命名空间的CSS支持的好文档。

有人有什么好主意吗?

修改

我在这里看到了一些非常好的建议,但我应该澄清一点,我绝对没有控制用户使用的输入机制。他们将内容输入到一个系统中,我的页面使用该系统的API将内容从中提取出来。该系统正在使用TinyMCE,但就像我说的那样,我们仍然会收到一些格式错误的内容。

4 个答案:

答案 0 :(得分:4)

为什么不使用markdown

如果您的用户具有HTML知识,或者能够掌握降价语法概念的人,我建议您更好地使用它。 Stackoverflow非常适合它。我无法想象在Stackoverflow上有一个通常的丰富编辑器。 Markdown编辑器使用起来更简单,更快捷,并为大多数情况提供足够的格式化功能。如果您需要一些特殊的附加功能,您可以随时添加这些功能,但是对于初学者而言,只需使用盒子功能即可。

自我验证的实时视图

但不要忘记包含用户正在撰写的内容的实时视图。自我验证创造了奇迹,因此他们在发布数据之前纠正自己的错误。

答案 1 :(得分:3)

不是解析结果或强制用户使用结构化格式,而只是在iframe中显示内容:

<iframe id="user_html"></iframe>

<script>
document.getElementById("user_html").src = "data:text/html;charset=utf-8," + escape(content);
</script>

答案 2 :(得分:1)

我专门建立了自定义CMS系统已有好几年了,并且总是运气好,结合了高质量的WYSIWYG,强大的前端验证和无情的后端验证。

我总是倾向于CKEditor,因为它是唯一可以在前端处理Microsoft Word输出的前端编辑器......这是我书中必备的内容。当然,其他人可以通过word解决方案获得粘贴,但是让用户使用它会带来好运。我实际上有一个客户端重载数据库插入由于Microsoft Word没有在Tiny中擦除。 HTML tidy是一个很好的解决方案,可以在后端验证之前进行清理。

CK有内置的模板和类,因此我使用这些模板和类来帮助我的用户进行格式化而不会过度。在后端我检查确保他们没有尝试过任何有趣的CSS业务,但它从来没有关注那组用户。给他们足够的(安全的)功能,他们永远不会变得流氓。

答案 3 :(得分:0)

  • 可能有点矫枉过正,但HTML Tidy 如果可以使用它可以提供帮助。

  • 使用WYSIWYG之类的 TinyMCE 或内置清理方法的CKEditor

Robert Koritnik's suggestion使用markdown似乎很棒,特别是考虑到你只允许一些无害的格式化标签。

我不认为你可以用CSS来阻止布局因打开HTML标签而破坏,所以我可能会忘记这个想法。