【发布时间】:2014-07-25 00:16:33
【问题描述】:
我使用PageDown 允许我的网站用户添加 cmets、博客文章等。我在服务器端使用 Java(具体来说是 Spring),我可以存储 PageDown 编辑器的输出在数据库中就好了。
现在我需要获取该 markdown 并将其以 html 的形式呈现在网站上,而不是在编辑器中,就像正在阅读的 cmets 和博客文章一样。
我收集到 PageDown 转换器有一个 makeHtml() 函数,您可以通过 html 在客户端调用该函数。我做了一个小测试:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>PageDown Test</title>
<link rel="stylesheet" type="text/css" href="PageDown/demo.css" />
<script type="text/javascript" src="PageDown/Markdown.Converter.js"></script>
<script type="text/javascript" src="PageDown/Markdown.Sanitizer.js"></script>
<script type="text/javascript" src="PageDown/Markdown.Editor.js"></script>
<script type="text/javascript">var converter = Markdown.getSanitizingConverter();</script>
</head>
<body>
<h1>PageDown Test</h1>
<script type="text/javascript">document.write(converter.makeHtml('${input}'));</script>
</body>
</html>
${input} 变量包含用户在表单中提交的降价。但是,如果输入是多行,这会中断,这将是大部分时间。
我的下一个选择是在服务器端执行此操作,但这似乎很老套。我的服务器全是 Java,因为找不到用 Java 实现的 PageDown.Sanitizer,我只好从 Java 调用 javascript 库,这看起来很恶心。
我已经尝试在谷歌上搜索一种向客户端呈现 Markdown 的标准方法,但我一直在使用 Markdown 编辑器,我已经在使用它了。有没有标准的方法来做到这一点,无论是在客户端还是在服务器端(在 Java 中)?
我真的不知道自己在做什么,因此欢迎任何建议。
【问题讨论】:
-
你问过 PageDown 的人他们是怎么做到的吗?另外,为什么你要渲染降价?您不应该将它按原样存储在服务器端,然后将其传输到客户端吗?如果你问的话,我敢打赌,有一种标准的方法可以在 PageDown 中呈现它。
-
感谢您的回复。我认为 PageDown 足够流行(这是 StackOverflow 使用的),来到 StackOverflow 可能比尝试直接联系他们更快。我正在尝试在客户端将降价转换为 sanitized html。我将它按原样存储在服务器上。这部分已经完成,现在我正在尝试将其输出给客户端以供阅读(不是在编辑器中编写,只是阅读)。
-
"sanitized" 是什么意思?
-
@markspace Sanitized 意味着我将它传递给 Markdown.getSanitizingConverter() 实例,它只是删除了不在白名单上的任何 html 标签。它比这更复杂,因为它确实 not 剥离代码块内的 html 标记,这正是我所需要的。这使得使用 Java 解决方案变得困难,因为它们似乎都是全有或全无,而不是尊重代码块的选择性卫生。
标签: java javascript markdown pagedown