我正在开发一个需要用户输入内容的应用程序,我决定使用Stack Overflow风格的Markdown编辑器.在研究了这个主题的最后几天之后,我意识到基本WMD编辑器有很多分叉,一些有一些基本的增强功能,有些与Stack Overflow有很大不同.
由于这将是应用程序的核心,我想从最好的代码库开始.如果有人能够推荐哪种解决方案最适合我的需求,我会很高兴.
以下是要求,以及我已经设法找到的内容.我希望这个问题可以帮助我决定使用哪个版本,也许可以帮助我发现一个更符合我需求的端口.
img
URL).以下是我看过的一些代码库,有了想法.显然,我可能会错过另一种解决方案.
我正在寻找一个用JavaScript编写的简单HTML清理程序.它不需要100%XSS安全.
我正在我的网站上实现Markdown和WMD Markdown编辑器(来自github的SO主分支).问题是,实时预览中显示的HTML不会被过滤,就像在SO上一样.我正在寻找一个用JavaScript编写的简单/快速HTML清理程序,以便我可以过滤预览窗口的内容.
无需具有完整XSS保护的完整解析器.我不是将输出发送回服务器.在将结果存储到数据库之前,我将Markdown发送到我使用正确的完整HTML清理程序的服务器.
谷歌对我来说绝对没用.我只收到数百条(通常是不正确的)文章,介绍如何从各种服务器端语言的用户生成的HTML中过滤掉javascript.
UPDATE
我会更好地解释为什么我需要这个.我的网站有一个非常类似于StackOverflow上的编辑器.有一个文本区域可以输入MarkDown语法,下面有一个预览窗口,可以显示提交后它的样子.
当用户提交某些内容时,它将以MarkDown格式发送到服务器.服务器将其转换为HTML,然后在其上运行HTML清理程序以清理HTML.MarkDown允许任意HTML,所以我需要清理它.例如,用户输入如下内容:
<script>alert('Boo!');</script>
Run Code Online (Sandbox Code Playgroud)
MarkDown转换器不会触及它,因为它是HTML.HTML清理程序将删除它,以便脚本元素消失.
但这不是预览窗口中发生的情况.预览窗口仅将MarkDown转换为HTML,但不会对其进行清理.因此,预览窗口将具有脚本元素.这意味着预览窗口与服务器上的实际呈现不同.
我想解决这个问题,所以我需要一个快速而又脏的JavaScript HTML清理程序.使用基本元素/属性黑名单和白名单的简单方法就可以了.它不需要是XSS安全的,因为XSS保护是由服务器端的HTML清理程序完成的.
这只是为了确保预览窗口在99.99%的时间内与实际渲染相匹配,这对我来说已经足够了.
你能帮我吗?提前致谢!
我很想做你在这个网站上编辑帖子时会发生什么.
我正在使用wmd作为我的markdown编辑器,当然当我转到编辑时,我得到它生成的HTML而不是像stackoverflow那样的降价.现在,有没有办法存储两者?或者它是否足够可靠,只需将HTML转换回markdown即可在wmd编辑器中显示?
谢谢!
我们正在为我们的一个项目启动开发人员文档,我想将其设置为托管维基.
会有很多代码示例,StackOverflow上使用的WMD/Prettify组合是我看到输入结构化文本(带标题等)与自动格式化代码块相结合的最简单方法.
有没有人知道使用这个编辑工具集的现有托管维基服务,所以我们不必编写自己的(至少不是马上)?
谢谢
似乎WMD-Editor正在将HTML发布到服务器而不是降价.我怎么能让它发送Markdown?
如何在WMD编辑器中添加一个新按钮,如code
按钮?如果我点击按钮<info></info>
标签将添加所选文本,如代码按钮.
我已经实现了Stack Overflow在我的项目中使用的WMD控件,它几乎就像一个魅力,但当我将更改保存到数据库时,它保存的是HTML版本,而不是Markdown版本.
所以我在我的文本框中有这个:
**boldtext**
Run Code Online (Sandbox Code Playgroud)
这真的是在拯救这个:
<b>boldtext</b>
Run Code Online (Sandbox Code Playgroud)
如何保存Markdown版本?
我知道如何使用widget =在常规django表单中使用WMD和其他此类javascript编辑器.但是,如何在Django管理员的文本字段中使用WMD?最重要的是,如何将它用于admin中contrib.flatpages的内容字段?
另外,我想我可能想使用WMD的StackOverflow分支,所以如果需要的话,我想要任何特殊说明.
我知道如何在模板中使用降价滤镜,因此该部分是可以的.我只需要让编辑器显示并在管理界面中工作.
对于我的post实体,我将HTML和MARKDOWN存储在数据库中(HTML从MARKDOWN转换).HTML用于在页面上呈现,而MARKDOWN用于编辑功能(使用WMD).我在存储到db之前清理HTML.问题是:我是否应该对降价进行消毒?或者它是xss安全的,如果我只传递给wmd编辑器?
wmd ×10
markdown ×7
html ×3
javascript ×3
django ×2
editor ×2
admin ×1
asp.net ×1
validation ×1
wiki ×1