解决Editor.md通过代码块原样输出Emoji被强制解析问题
Editor.md是一款优秀的开源Markdown 编辑器,在使用中遇到的一些问题和功能改进分享给需要的伙伴。
项目地址https://github.com/pandao/editor.md
问题
在Editor.md
中,如果要输出表情,我们只需要通过代码 :smiley:
就可以输出 。
如果我们通过代码块形式原样输出:smiley:
,就会被强制解析成
,这明显不是我们想要的。
通过查看editormd.js
源码,可以看到emoji这块的解析正则是这样写的:
editormd.regexs = {
emoji : /:([\w\+-]+):/g
}
这样问题就来了,意思就是页面所有被 : :
包含的元素都会被解析成 emoji
符号。
解决办法
1丶 第一步
在editormd.js
中搜索editormd.regexs
,修改emoji如下:
editormd.regexs = {
emoji : /(?!(<code>).):([\w\+-]+):(?!(<\/code>))/g
}
2丶 第二步
在editormd.js
中搜索text = text.replace(new RegExp(matchs[i])
,大概在3434行。
将
text = text.replace(new RegExp(matchs[i]), function($1, $2){
修改为
text = text.replace(emojiReg, function($1, $2){
这样就可以实现在编辑器里面原样输出代码块语法了,其他标签强制解析解决方法和这类似。
由于Editor.md
项目目前停止维护了,大家可以看我提交的 PR
原文地址:代码汇个人博客 http://www.codehui.net/info/15.html