解决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


posted @ 2018-12-21 23:30  代码汇  阅读(831)  评论(0编辑  收藏  举报