源创宝库吧 新一代精品资源网 在线工具箱 ⚡3BBS论坛 - 发现更多有趣的⚡ SanS三石导航页 DJ音乐吧-优质的DJ音乐分享平台 任推邦 - 不扣量的项目拉新平台 此位置招租 此位置招租 ⚡3BBS论坛 - 发现更多有趣的⚡ 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 ⚡3BBS论坛 - 发现更多有趣的⚡ 此位置招租 此位置招租 此位置招租 此位置招租 此位置招租 ⚡3BBS论坛 - 发现更多有趣的⚡ 此位置招租 此位置招租 此位置招租
返回列表 发布新帖
查看: 107|回复: 4

[技术交流] 在线Markdown编辑器Editormd的使用教程

  在线 
灌水成绩
2193
16759
22873
主题
回帖
积分

等级头衔
UID : 79
等级 : 超级版主

积分成就
威望 : 1012 点
贡献 : 2464 点
蛋壳 : 22667 枚
在线时间 : 3535 小时
注册时间 : 2024-4-13
最后登录 : 2024-11-25

荣誉勋章

荣誉会员帅哥认证最佳新人活跃会员灌水之王实习版主推广达人宣传达人论坛元老热心会员优秀作者优秀版主超级版主部落真神挂机之王

发表于 2024-7-19 23:12:40 | 查看全部 |阅读模式 来自: 中国–上海–上海–徐汇区

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我们经常可以看到各个博客网站中用于编辑文章的富文本编辑器,在富文本编辑器中,我们可以对我们的编辑内容样式进行设置。富文本编辑器一般是通过插件来实现的,我们只需要在页面中配置一下插件提供的一些API即可。本例中使用Editormd来演示如何配置使用富文本编辑器。


Editormd是国内开源的一款在线Markdown编辑器,可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。

主要特性
支持“标准”Markdown / CommonMark和Github风格的语法,也可变身为代码编辑器。

支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能。
支持ToC(Table of Contents)、Emoji表情、Task lists、@链接等Markdown扩展语法。
支持TeX科学公式(基于KaTeX)、流程图 Flowchart 和 时序图 Sequence Diagram。
支持识别和解析HTML标签,并且支持自定义过滤标签解析,具有可靠的安全性和几乎无限的扩展性。
支持 AMD / CMD 模块化加载(支持 Require.js & Sea.js),并且支持自定义扩展插件。
兼容主流的浏览器(IE8+)和Zepto.js,且支持iPad等平板设备。
支持自定义主题样式。


官网地址:https://pandao.github.io/editor.md/

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


下载好了之后,解压,打开。会发现文件的内容如下图所示

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


有了这些,我们就可以开始整合项目了。



1 下载editormd至自己项目根目录

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


2 项目部署

引入css样式文件和js文件

  1. <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
  2.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" >   
  3.     <!-- 引入editormd样式文件 -->
  4.     <link rel="stylesheet" href="./editormd/css/editormd.css" >
  5.     <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  6.      <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  7.     <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" ></script>
  8.     <script src="./editormd/editormd.js" ></script>
复制代码

注意:

​ 务必引入 editormd/css/editormd.css 和 editormd/editormd.js两个文件。


页面textarea结构

  1. <div id="test-editor">
  2.      <textarea id="inp-content" style="display:none;">这是我首次使用</textarea>
  3. </div>
复制代码

JS调用代码

  1. <script>
  2.   $(function() {
  3. var editor = editormd("test-editor", {
  4.                         height:'350px',
  5.                         syncScrolling : "single",
  6.                         emoji:true,
  7.                         //启动本地图片上传功能
  8.                         imageUpload: true,
  9.                         watch:true,
  10.                         imageFormats   : ["jpg", "jpeg", "gif", "png", "bmp", "webp","zip","rar"],
  11.                         path   : "./editormd/lib/",
  12.                         imageUploadURL : "./upload.php", //文件提交请求路径
  13.                         saveHTMLToTextarea : true, //注意3:这个配置,方便post提交表单
  14.                         previewTheme : "dark",//预览主题样式 黑色
  15.                     });
  16. })
  17. </script>
复制代码

配置参数

  1. {
  2.     mode                 : "gfm",          // gfm or markdown
  3.     name                 : "",             // Form element name for post
  4.     value                : "",             // value for CodeMirror, if mode not gfm/markdown
  5.     theme                : "",             // Editor.md self themes, before v1.5.0 is CodeMirror theme, default empty
  6.     editorTheme          : "default",      // Editor area, this is CodeMirror theme at v1.5.0
  7.     previewTheme         : "",             // Preview area theme, default empty
  8.     markdown             : "",             // Markdown source code
  9.     appendMarkdown       : "",             // if in init textarea value not empty, append markdown to textarea
  10.     width                : "100%",
  11.     height               : "100%",
  12.     path                 : "./lib/",       // Dependents module file directory
  13.     pluginPath           : "",             // If this empty, default use settings.path + "../plugins/"
  14.     delay                : 300,            // Delay parse markdown to html, Uint : ms
  15.     autoLoadModules      : true,           // Automatic load dependent module files
  16.     watch                : true,
  17.     placeholder          : "Enjoy Markdown! coding now...",
  18.     gotoLine             : true,           // Enable / disable goto a line
  19.     codeFold             : false,
  20.     autoHeight           : false,
  21.     autoFocus            : true,           // Enable / disable auto focus editor left input area
  22.     autoCloseTags        : true,
  23.     searchReplace        : true,           // Enable / disable (CodeMirror) search and replace function
  24.     syncScrolling        : true,           // options: true | false | "single", default true
  25.     readOnly             : false,          // Enable / disable readonly mode
  26.     tabSize              : 4,
  27.     indentUnit           : 4,
  28.     lineNumbers          : true,           // Display editor line numbers
  29.     lineWrapping         : true,
  30.     autoCloseBrackets    : true,
  31.     showTrailingSpace    : true,
  32.     matchBrackets        : true,
  33.     indentWithTabs       : true,
  34.     styleSelectedText    : true,
  35.     matchWordHighlight   : true,           // options: true, false, "onselected"
  36.     styleActiveLine      : true,           // Highlight the current line
  37.     dialogLockScreen     : true,
  38.     dialogShowMask       : true,
  39.     dialogDraggable      : true,
  40.     dialogMaskBgColor    : "#fff",
  41.     dialogMaskOpacity    : 0.1,
  42.     fontSize             : "13px",
  43.     saveHTMLToTextarea   : false,          // If enable, Editor will create a <textarea name="{editor-id}-html-code"> tag save HTML code for form post to server-side.
  44.     disabledKeyMaps      : [],
  45.    
  46.     onload               : function() {},
  47.     onresize             : function() {},
  48.     onchange             : function() {},
  49.     onwatch              : null,
  50.     onunwatch            : null,
  51.     onpreviewing         : function() {},
  52.     onpreviewed          : function() {},
  53.     onfullscreen         : function() {},
  54.     onfullscreenExit     : function() {},
  55.     onscroll             : function() {},
  56.     onpreviewscroll      : function() {},
  57.    
  58.     imageUpload          : false,          // Enable/disable upload
  59.     imageFormats         : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
  60.     imageUploadURL       : "",             // Upload url
  61.     crossDomainUpload    : false,          // Enable/disable Cross-domain upload
  62.     uploadCallbackURL    : "",             // Cross-domain upload callback url

  63.     toc                  : true,           // Table of contents
  64.     tocm                 : false,          // Using [TOCM], auto create ToC dropdown menu
  65.     tocTitle             : "",             // for ToC dropdown menu button
  66.     tocDropdown          : false,          // Enable/disable Table Of Contents dropdown menu
  67.     tocContainer         : "",             // Custom Table Of Contents Container Selector
  68.     tocStartLevel        : 1,              // Said from H1 to create ToC
  69.     htmlDecode           : false,          // Open the HTML tag identification
  70.     pageBreak            : true,           // Enable parse page break [========]
  71.     atLink               : true,           // for @link
  72.     emailLink            : true,           // for email address auto link
  73.     taskList             : false,          // Enable Github Flavored Markdown task lists
  74.     emoji                : false,          // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);
  75.                                            // Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;
  76.                                            // Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;
  77.     tex                  : false,          // TeX(LaTeX), based on KaTeX
  78.     flowChart            : false,          // flowChart.js only support IE9+
  79.     sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+
  80.     previewCodeHighlight : true,           // Enable / disable code highlight of editor preview area

  81.     toolbar              : true,           // show or hide toolbar
  82.     toolbarAutoFixed     : true,           // on window scroll auto fixed position
  83.     toolbarIcons         : "full",         // Toolbar icons mode, options: full, simple, mini, See `editormd.toolbarModes` property.
  84.     toolbarTitles        : {},
  85.     toolbarHandlers      : {
  86.         ucwords : function() {
  87.             return editormd.toolbarHandlers.ucwords;
  88.         },
  89.         lowercase : function() {
  90.             return editormd.toolbarHandlers.lowercase;
  91.         }
  92.     },
  93.     toolbarCustomIcons   : {               // using html tag create toolbar icon, unused default <a> tag.
  94.         lowercase        : "<a href="javascript:;" title="Lowercase" unselectable="on"><i class="fa" name="lowercase" style="font-size:24px;margin-top: -10px;">a</i></a>",
  95.         "ucwords"        : "<a href="javascript:;" title="ucwords" unselectable="on"><i class="fa" name="ucwords" style="font-size:20px;margin-top: -3px;">Aa</i></a>"
  96.     },
  97.     toolbarIconTexts     : {},
  98.    
  99.     lang : {  // Language data, you can custom your language.
  100.         name        : "zh-cn",
  101.         description : "开源在线Markdown编辑器<br/>Open source online Markdown editor.",
  102.         tocTitle    : "目录",
  103.         toolbar     : {
  104.             //...
  105.         },
  106.         button: {
  107.             //...
  108.         },
  109.         dialog : {
  110.             //...
  111.         }
  112.         //...
  113.     }
  114. }
复制代码

显示效果

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程

界面出来了已经完成很大一部分了。通过设置提交数据打印可以查看editormd提交数据的一个结构-

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程

通过debug我们可有看到提交给后台的数据如下:

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


图片上传处理


1 editormd的图片上传功能有很多坑,下面我们将依次填坑。

editormd图片上传功能需要设置,要在返回固定格式的json数据,即使在调试时候。扣丁曼在初次使用editormd项目时在此处浪费了很多时间。

开启图片上传参数imageUpload : true、imageFormats : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],、imageUploadURL : "./upload.php",

后台返回样式如下:
  1. {
  2.     success : 0 | 1, //0表示上传失败;1表示上传成功
  3.     message : "提示的信息",
  4.     url     : "图片地址" //上传成功时才返回
  5. }
复制代码
2 增加截图上传和拖拽上传图片功能

由于editormd的上传图片功能用户体验并不友好!每次上传图片很费事。

扣丁曼通过收集网上其他小伙伴提供的建议也实现了editormd的截图上传和拖拽上传功能。

新增JS插件代码

文件名editoemd-image-past.js放置于editormd/plugins文件夹下
  1. <script>
  2.     console.log('代码内容较多请通过下载方式查看!')
  3. </script>
复制代码
页面引入

  1. <script src="./editormd/plugins/editormd-image-past.js"></script>
复制代码
项目中配置

  1. path   : "__PAGE__/global/plugins/editormd/lib/",
  2. imageUploadURL : "/uploadFile", //文件提交请求路径
  3. onload : function() {
  4.         initPasteDragImg(this); //配置图片粘贴上传
  5.         },
  6. saveHTMLToTextarea : true, //注意3:这个配置,方便post提交表单
复制代码

前台展示editormd数据】
在view页面引入css文件和js文件如下

  1. <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
  2.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" >
  3.    
  4.     <!-- 引入editormd样式文件 -->
  5.     <link rel="stylesheet" href="./editormd/css/editormd.css" >

  6. <link href="./editormd/css/sons-of-obsidian.css" rel="stylesheet" type="text/css" />
  7.     <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  8.      <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  9.     <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" ></script>   

复制代码

页面展示区

  1. <div id="test-editormd-view" style="width:700px;" class="blog-single-desc">
  2.      <textarea style="display:none;" id="test-editormd-markdown-doc"><?php echo $data==''? '## 还没有数据哦!':$data;?></textarea>
  3. </div>   

复制代码


js处理


  1. <script src="./editormd/lib/marked.min.js"></script>
  2. <!-- 第三方界面样式文件google -->
  3. <script src="./editormd/lib/google-code-prettify/prettify.js"></script>
  4. <script src="./editormd/lib/raphael.min.js"></script>
  5. <script src="./editormd/lib/underscore.min.js"></script>
  6. <script src="./editormd/lib/sequence-diagram.min.js"></script>
  7. <script src="./editormd/lib/flowchart.min.js"></script>
  8. <script src="./editormd/editormd.js"></script>
  9. <script>
  10. $(function() {
  11.         editormd.markdownToHTML("test-editormd-view", {
  12.             htmlDecode: "style,script,iframe", // you can filter tags decode
  13.             emoji: true,
  14.             taskList: true,
  15.             tex: true, // 默认不解析
  16.             flowChart: false, // 默认不解析
  17.             sequenceDiagram: true, // 默认不解析
  18.             path: "./editormd/lib/",
  19.             previewTheme: "dark"
  20.         });
  21. });
  22. </script>

复制代码

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程



----------------------------
原文信息,尊重版权!

在线Markdown编辑器Editormd的使用教程

在线Markdown编辑器Editormd的使用教程


  • 通过公众号“扣丁曼”(号码:qcgcoder)直接与我联系。

  • 通过我的博客获取最新资讯

    博客网址:https://52qcg.cn


要么刷卡,要么投币,要么滚蛋。看什么看!公交车都坐不起,还冒充黑客帝国。
  在线 
灌水成绩
2193
16759
22873
主题
回帖
积分

等级头衔
UID : 79
等级 : 超级版主

积分成就
威望 : 1012 点
贡献 : 2464 点
蛋壳 : 22667 枚
在线时间 : 3535 小时
注册时间 : 2024-4-13
最后登录 : 2024-11-25

荣誉勋章

荣誉会员帅哥认证最佳新人活跃会员灌水之王实习版主推广达人宣传达人论坛元老热心会员优秀作者优秀版主超级版主部落真神挂机之王

 楼主| 发表于 2024-7-19 23:21:39 | 查看全部 来自: 中国–上海–上海–徐汇区
要么刷卡,要么投币,要么滚蛋。看什么看!公交车都坐不起,还冒充黑客帝国。
  在线 
灌水成绩
2193
16759
22873
主题
回帖
积分

等级头衔
UID : 79
等级 : 超级版主

积分成就
威望 : 1012 点
贡献 : 2464 点
蛋壳 : 22667 枚
在线时间 : 3535 小时
注册时间 : 2024-4-13
最后登录 : 2024-11-25

荣誉勋章

荣誉会员帅哥认证最佳新人活跃会员灌水之王实习版主推广达人宣传达人论坛元老热心会员优秀作者优秀版主超级版主部落真神挂机之王

 楼主| 发表于 2024-7-19 23:13:16 | 查看全部 来自: 中国–上海–上海–徐汇区
滴~至尊卡,打卡成功!楼主辛苦了,祝楼主:万事如意🧡,打卡时间:2024年07月19日 23:13:17
—— 来自:荷包蛋部落(HBD0.CN)一键打卡
新帖通知群(钉钉群):点击查看
荷包蛋部落(QQ群):荷包蛋部落 - HBD0.CN
💥荷包蛋联盟-免费的自助广告-为广大用户提供宣传服务!💯
  离线 
灌水成绩
795
821
4573
主题
回帖
积分

等级头衔
UID : 1
等级 : 管理员

积分成就
威望 : 797 点
贡献 : 2000 点
蛋壳 : 6509 枚
在线时间 : 1482 小时
注册时间 : 2023-12-27
最后登录 : 2024-11-25

荣誉勋章

最佳新人活跃会员热心会员推广达人宣传达人灌水之王部落真神优秀版主荣誉会员论坛元老优秀作者实习版主超级版主帅哥认证管理员

发表于 2024-7-19 23:15:20 | 查看全部 来自: 中国–山东–泰安
新帖通知群(钉钉群):点击查看
荷包蛋部落(QQ群):荷包蛋部落 - HBD0.CN
💥荷包蛋联盟-免费的自助广告-为广大用户提供宣传服务!💯
  在线 
灌水成绩
2193
16759
22873
主题
回帖
积分

等级头衔
UID : 79
等级 : 超级版主

积分成就
威望 : 1012 点
贡献 : 2464 点
蛋壳 : 22667 枚
在线时间 : 3535 小时
注册时间 : 2024-4-13
最后登录 : 2024-11-25

荣誉勋章

荣誉会员帅哥认证最佳新人活跃会员灌水之王实习版主推广达人宣传达人论坛元老热心会员优秀作者优秀版主超级版主部落真神挂机之王

 楼主| 发表于 2024-7-19 23:22:25 | 查看全部 来自: 中国–上海–上海–徐汇区

刚才置顶了一个回复,我下载了源码文件包
要么刷卡,要么投币,要么滚蛋。看什么看!公交车都坐不起,还冒充黑客帝国。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
4楼
2楼
3楼
5楼
投诉/建议联系

8641340@qq.com

欢迎各位朋友加入本社区,
共同维护良好的社区氛围
  • QQ用户交流群
  • 钉钉新帖推送群
Powered by Discuz! X3.5 Licensed  Copyright © 2001-2024 荷包蛋部落 版权所有 All Rights Reserved. 鲁ICP备20023396号-6
关灯 在本版发帖
加入钉钉新帖推送群
QQ客服返回顶部
快速回复 返回顶部 返回列表