<!DOCTYPE html> 
 | 
<html lang="zh"> 
 | 
    <head> 
 | 
        <meta charset="utf-8" /> 
 | 
        <title>自定义工具栏 - Editor.md examples</title> 
 | 
        <link rel="stylesheet" href="css/style.css" /> 
 | 
        <link rel="stylesheet" href="../css/editormd.css" /> 
 | 
        <link rel="shortcut icon" href="https://pandao.github.io/editor.md/favicon.ico" type="image/x-icon" /> 
 | 
    </head> 
 | 
    <body> 
 | 
        <div id="layout"> 
 | 
            <header> 
 | 
                <h1>自定义工具栏</h1>  
 | 
                <p>Custom toolbar (icons handler)</p>    
 | 
            </header> 
 | 
            <div id="test-editormd"> 
 | 
                <textarea style="display:none;">### Custom toolbar 
 | 
  
 | 
```javascript 
 | 
$(function() { 
 | 
    var testEditor = editormd("test-editormd", { 
 | 
        width: "90%", 
 | 
        height: 640, 
 | 
        path : '../lib/', 
 | 
        toolbarIcons : function() { 
 | 
            // Or return editormd.toolbarModes[name]; // full, simple, mini 
 | 
            // Using "||" set icons align right. 
 | 
            return ["undo", "redo", "|", "bold", "hr", "|", "preview", "watch", "|", "fullscreen", "info", "testIcon", "testIcon2", "file", "faicon", "||", "watch", "fullscreen", "preview", "testIcon"] 
 | 
        }, 
 | 
        toolbarIconsClass : { 
 | 
            testIcon : "fa-gears"  // 指定一个FontAawsome的图标类 
 | 
        }, 
 | 
        toolbarIconTexts : { 
 | 
            testIcon2 : "测试按钮"  // 如果没有图标,则可以这样直接插入内容,可以是字符串或HTML标签 
 | 
        }, 
 | 
  
 | 
        // 用于增加自定义工具栏的功能,可以直接插入HTML标签,不使用默认的元素创建图标 
 | 
        toolbarCustomIcons : { 
 | 
            file   : "<input type="file" accept=".md" />", 
 | 
            faicon : "<i class="fa fa-star" onclick="alert('faicon');"></i>" 
 | 
        }, 
 | 
  
 | 
        // 自定义工具栏按钮的事件处理 
 | 
        toolbarHandlers : { 
 | 
            /** 
 | 
             * @param {Object}      cm         CodeMirror对象 
 | 
             * @param {Object}      icon       图标按钮jQuery元素对象 
 | 
             * @param {Object}      cursor     CodeMirror的光标对象,可获取光标所在行和位置 
 | 
             * @param {String}      selection  编辑器选中的文本 
 | 
             */ 
 | 
            testIcon : function(cm, icon, cursor, selection) { 
 | 
  
 | 
                //var cursor    = cm.getCursor();     //获取当前光标对象,同cursor参数 
 | 
                //var selection = cm.getSelection();  //获取当前选中的文本,同selection参数 
 | 
  
 | 
                // 替换选中文本,如果没有选中文本,则直接插入 
 | 
                cm.replaceSelection("[" + selection + ":testIcon]"); 
 | 
  
 | 
                // 如果当前没有选中的文本,将光标移到要输入的位置 
 | 
                if(selection === "") { 
 | 
                    cm.setCursor(cursor.line, cursor.ch + 1); 
 | 
                } 
 | 
  
 | 
                // this == 当前editormd实例 
 | 
                console.log("testIcon =>", this, cm, icon, cursor, selection); 
 | 
            }, 
 | 
  
 | 
            testIcon2 : function(cm, icon, cursor, selection) { 
 | 
                cm.replaceSelection("[" + selection + ":testIcon2](" + icon.html() + ")"); 
 | 
                console.log("testIcon2 =>", this, icon.html()); 
 | 
            } 
 | 
        }, 
 | 
  
 | 
        lang : { 
 | 
            toolbar : { 
 | 
                file : "上传文件", 
 | 
                testIcon : "自定义按钮testIcon",  // 自定义按钮的提示文本,即title属性 
 | 
                testIcon2 : "自定义按钮testIcon2",   
 | 
                undo : "撤销 (Ctrl+Z)" 
 | 
            } 
 | 
        }, 
 | 
  
 | 
        onload : function(){ 
 | 
            $("[type=\"file\"]").bind("change", function(){ 
 | 
                alert($(this).val()); 
 | 
                testEditor.cm.replaceSelection($(this).val()); 
 | 
                console.log($(this).val(), testEditor); 
 | 
            }); 
 | 
        } 
 | 
    }); 
 | 
}); 
 | 
``` 
 | 
</textarea> 
 | 
            </div> 
 | 
        </div> 
 | 
         
 | 
        <script src="js/jquery.min.js"></script> 
 | 
        <script src="../editormd.js"></script>  
 | 
        <!-- 多语言和自定义工具栏的整合测试 --> 
 | 
        <script src="../languages/en.js"></script>    
 | 
        <script type="text/javascript"> 
 | 
            $(function() { 
 | 
                var testEditor = editormd("test-editormd", { 
 | 
                    width: "90%", 
 | 
                    height: 640, 
 | 
                    path : '../lib/', 
 | 
                    watch : false, 
 | 
                    toolbarIcons : function() { 
 | 
                        // Or return editormd.toolbarModes[name]; // full, simple, mini 
 | 
                        // Using "||" set icons align right. 
 | 
                        return ["undo", "redo", "|", "bold", "hr", "|", "preview", "watch", "|", "fullscreen", "info", "testIcon", "testIcon2", "file", "faicon", "||", "watch", "fullscreen", "preview", "testIcon", "file"] 
 | 
                    }, 
 | 
                    // toolbarIcons : "full", // You can also use editormd.toolbarModes[name] default list, values: full, simple, mini. 
 | 
                    toolbarIconsClass : { 
 | 
                        testIcon : "fa-gears"  // 指定一个FontAawsome的图标类 
 | 
                    }, 
 | 
                    toolbarIconTexts : { 
 | 
                        testIcon2 : "测试按钮Test button"  // 如果没有图标,则可以这样直接插入内容,可以是字符串或HTML标签 
 | 
                    }, 
 | 
                     
 | 
                    // 用于增加自定义工具栏的功能,可以直接插入HTML标签,不使用默认的元素创建图标 
 | 
                    toolbarCustomIcons : { 
 | 
                        file   : "<input type=\"file\" accept=\".md\" />", 
 | 
                        faicon : "<i class=\"fa fa-star\" onclick=\"alert('faicon');\"></i>" 
 | 
                    }, 
 | 
  
 | 
                    // 自定义工具栏按钮的事件处理 
 | 
                    toolbarHandlers : { 
 | 
                        /** 
 | 
                         * @param {Object}      cm         CodeMirror对象 
 | 
                         * @param {Object}      icon       图标按钮jQuery元素对象 
 | 
                         * @param {Object}      cursor     CodeMirror的光标对象,可获取光标所在行和位置 
 | 
                         * @param {String}      selection  编辑器选中的文本 
 | 
                         */ 
 | 
                        testIcon : function(cm, icon, cursor, selection) { 
 | 
                             
 | 
                            //var cursor    = cm.getCursor();     //获取当前光标对象,同cursor参数 
 | 
                            //var selection = cm.getSelection();  //获取当前选中的文本,同selection参数 
 | 
                             
 | 
                            // 替换选中文本,如果没有选中文本,则直接插入 
 | 
                            cm.replaceSelection("[" + selection + ":testIcon]"); 
 | 
                             
 | 
                            // 如果当前没有选中的文本,将光标移到要输入的位置 
 | 
                            if(selection === "") { 
 | 
                                cm.setCursor(cursor.line, cursor.ch + 1); 
 | 
                            } 
 | 
                             
 | 
                            // this == 当前editormd实例 
 | 
                            console.log("testIcon =>", this, cm, icon, cursor, selection); 
 | 
                        }, 
 | 
                         
 | 
                        testIcon2 : function(cm, icon, cursor, selection) { 
 | 
                            cm.replaceSelection("[" + selection + ":testIcon2](" + icon.html() + ")"); 
 | 
                            console.log("testIcon2 =>", this, icon.html()); 
 | 
                        } 
 | 
                    }, 
 | 
                     
 | 
                    lang : { 
 | 
                        toolbar : { 
 | 
                            file : "上传文件", 
 | 
                            testIcon : "自定义按钮testIcon",  // 自定义按钮的提示文本,即title属性 
 | 
                            testIcon2 : "自定义按钮testIcon2",   
 | 
                            undo : "撤销 (Ctrl+Z)" 
 | 
                        } 
 | 
                    }, 
 | 
  
 | 
                    onload : function(){ 
 | 
                        $("[type=\"file\"]").bind("change", function(){ 
 | 
                            alert($(this).val()); 
 | 
                            testEditor.cm.replaceSelection($(this).val()); 
 | 
                            console.log($(this).val(), testEditor); 
 | 
                        }); 
 | 
                    } 
 | 
                }); 
 | 
            }); 
 | 
        </script> 
 | 
    </body> 
 | 
</html> 
 |