# Editor.md
![](https://pandao.github.io/editor.md/images/logos/editormd-logo-180x180.png)
![](https://img.shields.io/github/stars/pandao/editor.md.svg)
![](https://img.shields.io/github/forks/pandao/editor.md.svg)
![](https://img.shields.io/github/tag/pandao/editor.md.svg)
![](https://img.shields.io/github/release/pandao/editor.md.svg)
![](https://img.shields.io/github/issues/pandao/editor.md.svg)
![](https://img.shields.io/bower/v/editor.md.svg)
**Editor.md** : The open source embeddable online markdown editor (component), based on CodeMirror & jQuery & Marked.
### Features
- Support Standard Markdown / CommonMark and GFM (GitHub Flavored Markdown);
- Full-featured: Real-time Preview, Image (cross-domain) upload, Preformatted text/Code blocks/Tables insert, Code fold, Search replace, Read only, Themes, Multi-languages, L18n, HTML entities, Code syntax highlighting...;
- Markdown Extras : Support [ToC (Table of Contents) ](https://pandao.github.io/editor.md/examples/toc.html ), [Emoji ](https://pandao.github.io/editor.md/examples/emoji.html ), [Task lists ](https://pandao.github.io/editor.md/examples/task-lists.html ), [@Links ](https://pandao.github.io/editor.md/examples/@links.html )...;
- Compatible with all major browsers (IE8+), compatible Zepto.js and iPad;
- Support [decode & fliter of the HTML tags & attributes ](https://pandao.github.io/editor.md/examples/html-tags-decode.html );
- Support [TeX (LaTeX expressions, Based on KaTeX) ](https://pandao.github.io/editor.md/examples/katex.html ), [Flowchart ](https://pandao.github.io/editor.md/examples/flowchart.html ) and [Sequence Diagram ](https://pandao.github.io/editor.md/examples/sequence-diagram.html ) of Markdown extended syntax;
- Support AMD/CMD (Require.js & Sea.js) Module Loader, and Custom/define editor plugins;
[README & Examples (English) ](https://pandao.github.io/editor.md/en.html )
--------
**Editor.md** 是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。
![editormd-screenshot ](https://pandao.github.io/editor.md/examples/images/editormd-screenshot.png "editormd-screenshot" )
#### 主要特性
- 支持通用 Markdown / CommonMark 和 GFM (GitHub Flavored Markdown) 风格的语法,也可[变身为代码编辑器](https://pandao.github.io/editor.md/examples/change-mode.html);
- 支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、跳转到行、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能;
- 支持 [ToC(Table of Contents) ](https://pandao.github.io/editor.md/examples/toc.html )、[Emoji表情](https://pandao.github.io/editor.md/examples/emoji.html)、[Task lists](https://pandao.github.io/editor.md/examples/task-lists.html)、[@链接](https://pandao.github.io/editor.md/examples/@links.html)等 Markdown 扩展语法;
- 支持 TeX 科学公式(基于 [KaTeX ](https://pandao.github.io/editor.md/examples/katex.html ))、流程图 [Flowchart ](https://pandao.github.io/editor.md/examples/flowchart.html ) 和 [时序图 Sequence Diagram ](https://pandao.github.io/editor.md/examples/sequence-diagram.html );
- 支持[识别和解析 HTML 标签,并且支持自定义过滤标签及属性解析](https://pandao.github.io/editor.md/examples/html-tags-decode.html),具有可靠的安全性和几乎无限的扩展性;
- 支持 AMD / CMD 模块化加载(支持 [Require.js ](https://pandao.github.io/editor.md/examples/use-requirejs.html ) & [Sea.js ](https://pandao.github.io/editor.md/examples/use-seajs.html )),并且支持[自定义扩展插件](https://pandao.github.io/editor.md/examples/define-plugin.html);
- 兼容主流的浏览器(IE8+)和 [Zepto.js ](https://pandao.github.io/editor.md/examples/use-zepto.html ),且支持 iPad 等平板设备;
#### Download & install
Download:
[Github download ](https://github.com/pandao/editor.md/archive/master.zip )
NPM install :
```bash
npm install editor.md
```
Bower install :
```bash
bower install editor.md
```
#### Usages
##### Create a Markdown editor
```html
< link rel = "stylesheet" href = "editor.md/css/editormd.min.css" / >
< div id = "editor" >
<!-- Tips: Editor.md can auto append a `<textarea>` tag -->
< textarea style = "display:none;" > ### Hello Editor.md !< / textarea >
< / div >
< script src = "jquery.min.js" > < / script >
< script src = "editor.md/editormd.min.js" > < / script >
< script type = "text/javascript" >
$(function() {
var editor = editormd("editor", {
// width: "100%",
// height: "100%",
// markdown: "xxxx", // dynamic set Markdown text
path : "editor.md/lib/" // Autoload modules mode, codemirror, marked... dependents libs path
});
});
< / script >
```
If you using modular script loader:
- [Using Require.js ](https://github.com/pandao/editor.md/tree/master/examples/use-requirejs.html )
- [Using Sea.js ](https://github.com/pandao/editor.md/tree/master/examples/use-seajs.html )
##### Markdown to HTML
```html
< link rel = "stylesheet" href = "editormd/css/editormd.preview.css" / >
< div id = "test-markdown-view" >
<!-- Server - side output Markdown text -->
< textarea style = "display:none;" > ### Hello world!< / textarea >
< / div >
< script src = "jquery.min.js" > < / script >
< script src = "editormd/editormd.js" > < / script >
< script src = "editormd/lib/marked.min.js" > < / script >
< script src = "editormd/lib/prettify.min.js" > < / script >
< script type = "text/javascript" >
$(function() {
var testView = editormd.markdownToHTML("test-markdown-view", {
// markdown : "[TOC]\n### Hello world!\n## Heading 2", // Also, you can dynamic set Markdown text
// htmlDecode : true, // Enable / disable HTML tag encode.
// htmlDecode : "style,script,iframe", // Note: If enabled, you should filter some dangerous HTML tags for website security.
});
});
< / script >
```
> See the full example: [http://editor.md.ipandao.com/examples/html-preview-markdown-to-html.html](http://editor.md.ipandao.com/examples/html-preview-markdown-to-html.html)
##### HTML to Markdown?
Sorry, Editor.md not support HTML to Markdown parsing, Maybe In the future.
#### Examples
[https://pandao.github.io/editor.md/examples/index.html ](https://pandao.github.io/editor.md/examples/index.html )
#### Options
Editor.md options and default values:
```javascript
{
mode : "gfm", // gfm or markdown
name : "", // Form element name for post
value : "", // value for CodeMirror, if mode not gfm/markdown
theme : "", // Editor.md self themes, before v1.5.0 is CodeMirror theme, default empty
editorTheme : "default", // Editor area, this is CodeMirror theme at v1.5.0
previewTheme : "", // Preview area theme, default empty
markdown : "", // Markdown source code
appendMarkdown : "", // if in init textarea value not empty, append markdown to textarea
width : "100%",
height : "100%",
path : "./lib/", // Dependents module file directory
pluginPath : "", // If this empty, default use settings.path + "../plugins/"
delay : 300, // Delay parse markdown to html, Uint : ms
autoLoadModules : true, // Automatic load dependent module files
watch : true,
placeholder : "Enjoy Markdown! coding now...",
gotoLine : true, // Enable / disable goto a line
codeFold : false,
autoHeight : false,
autoFocus : true, // Enable / disable auto focus editor left input area
autoCloseTags : true,
searchReplace : true, // Enable / disable (CodeMirror) search and replace function
syncScrolling : true, // options: true | false | "single", default true
readOnly : false, // Enable / disable readonly mode
tabSize : 4,
indentUnit : 4,
lineNumbers : true, // Display editor line numbers
lineWrapping : true,
autoCloseBrackets : true,
showTrailingSpace : true,
matchBrackets : true,
indentWithTabs : true,
styleSelectedText : true,
matchWordHighlight : true, // options: true, false, "onselected"
styleActiveLine : true, // Highlight the current line
dialogLockScreen : true,
dialogShowMask : true,
dialogDraggable : true,
dialogMaskBgColor : "#fff",
dialogMaskOpacity : 0.1,
fontSize : "13px",
saveHTMLToTextarea : false, // If enable, Editor will create a < textarea name = "{editor-id}-html-code" > tag save HTML code for form post to server-side.
disabledKeyMaps : [],
onload : function() {},
onresize : function() {},
onchange : function() {},
onwatch : null,
onunwatch : null,
onpreviewing : function() {},
onpreviewed : function() {},
onfullscreen : function() {},
onfullscreenExit : function() {},
onscroll : function() {},
onpreviewscroll : function() {},
imageUpload : false, // Enable/disable upload
imageFormats : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
imageUploadURL : "", // Upload url
crossDomainUpload : false, // Enable/disable Cross-domain upload
uploadCallbackURL : "", // Cross-domain upload callback url
toc : true, // Table of contents
tocm : false, // Using [TOCM], auto create ToC dropdown menu
tocTitle : "", // for ToC dropdown menu button
tocDropdown : false, // Enable/disable Table Of Contents dropdown menu
tocContainer : "", // Custom Table Of Contents Container Selector
tocStartLevel : 1, // Said from H1 to create ToC
htmlDecode : false, // Open the HTML tag identification
pageBreak : true, // Enable parse page break [========]
atLink : true, // for @link
emailLink : true, // for email address auto link
taskList : false, // Enable Github Flavored Markdown task lists
emoji : false, // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);
// Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;
// Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;
tex : false, // TeX(LaTeX), based on KaTeX
flowChart : false, // flowChart.js only support IE9+
sequenceDiagram : false, // sequenceDiagram.js only support IE9+
previewCodeHighlight : true, // Enable / disable code highlight of editor preview area
toolbar : true, // show or hide toolbar
toolbarAutoFixed : true, // on window scroll auto fixed position
toolbarIcons : "full", // Toolbar icons mode, options: full, simple, mini, See `editormd.toolbarModes` property.
toolbarTitles : {},
toolbarHandlers : {
ucwords : function() {
return editormd.toolbarHandlers.ucwords;
},
lowercase : function() {
return editormd.toolbarHandlers.lowercase;
}
},
toolbarCustomIcons : { // using html tag create toolbar icon, unused default < a > tag.
lowercase : "< a href = \"javascript:; \" title = \"Lowercase \" unselectable = \"on \">< i class = \"fa \" name = \"lowercase \" style = \"font-size:24px;margin-top: -10px ; \"> a</ i ></ a > ",
"ucwords" : "< a href = \"javascript:; \" title = \"ucwords \" unselectable = \"on \">< i class = \"fa \" name = \"ucwords \" style = \"font-size:20px;margin-top: -3px ; \"> Aa</ i ></ a > "
},
toolbarIconTexts : {},
lang : { // Language data, you can custom your language.
name : "zh-cn",
description : "开源在线Markdown编辑器< br / > Open source online Markdown editor.",
tocTitle : "目录",
toolbar : {
//...
},
button: {
//...
},
dialog : {
//...
}
//...
}
}
```
#### Dependents
- [CodeMirror ](http://codemirror.net/ "CodeMirror" )
- [marked ](https://github.com/markedjs/marked "marked" )
- [jQuery ](http://jquery.com/ "jQuery" )
- [FontAwesome ](http://fontawesome.io/ "FontAwesome" )
- [github-markdown.css ](https://github.com/sindresorhus/github-markdown-css "github-markdown.css" )
- [KaTeX ](http://khan.github.io/KaTeX/ "KaTeX" )
- [prettify.js ](http://code.google.com/p/google-code-prettify/ "prettify.js" )
- [Rephael.js ](http://raphaeljs.com/ "Rephael.js" )
- [flowchart.js ](http://adrai.github.io/flowchart.js/ "flowchart.js" )
- [sequence-diagram.js ](http://bramp.github.io/js-sequence-diagrams/ "sequence-diagram.js" )
- [Prefixes.scss ](https://github.com/pandao/prefixes.scss "Prefixes.scss" )
#### Changes
[Change logs ](https://github.com/pandao/editor.md/blob/master/CHANGE.md )
#### License
The MIT License.
Copyright (c) 2015-2019 Pandao