当前位置:首页 > 技术 > 正文内容

wangEditor3菜单修改之拆分有序排列无序排列菜单

醉清风2019-09-11技术7681

wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单。支持 IE10+ 浏览器。
官网:www.wangEditor.com
文档:www.kancloud.cn/wangfupeng/wangeditor3/332599
源码:github.com/wangfupeng1988/wangEditor


简单介绍一下wangEditor如何拆分有序排列无序排列菜单。

html

<div id="editor" class="col-lg-9" style="margin-left: 10%">
        <p>欢迎使用 <b>wangEditor</b> 富文本编辑器</p>
</div>

js

<script type="text/javascript">        
    var E = window.wangEditor        
    var editor = new E('#editor')                   
    editor.customConfig.menus =
    [            
    'head',  // 标题            
    'bold',  // 粗体
    'list',  // 列表
      'listn',  // 列表                 
    'fgx',   //分割线           
    'image',  // 插入图片    
    ]
    editor.create();    
</script>

wangEditor.js

/*
    menu - list
*/
// 构造函数
function List(editor) {
    var _this = this;
    this.editor = editor;
    this.$elem = $('<div class="w-e-menu"><i class="w-e-icon-list-numbered"></i></div>');
    this.type = 'click';
    // 当前是否 active 状态
    this._active = false;
}
// 原型
List.prototype = {
    constructor: List,
    // 执行命令
    onClick: function onClick(e) {
        var editor = this.editor;
        var $textElem = editor.$textElem;
        editor.cmd.do('insertOrderedList');
        // 验证列表是否被包裹在 <p> 之内
        var $selectionElem = editor.selection.getSelectionContainerElem();
        if ($selectionElem.getNodeName() === 'LI') {
            $selectionElem = $selectionElem.parent();
        }
        if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) {
            return;
        }
        if ($selectionElem.equal($textElem)) {
            // 证明是顶级标签,没有被 <p> 包裹
            return;
        }
        var $parent = $selectionElem.parent();
        if ($parent.equal($textElem)) {
            // $parent 是顶级标签,不能删除
            return;
        }
        $selectionElem.insertAfter($parent);
        $parent.remove();
    },
    // 试图改变 active 状态
    tryChangeActive: function tryChangeActive(e) {
        var editor = this.editor;
        var $elem = this.$elem;
        if (editor.cmd.queryCommandState('insertOrderedList')) {
            this._active = true;
            $elem.addClass('w-e-active');
        } else {
            this._active = false;
            $elem.removeClass('w-e-active');
        }
    }
};
//无序
function Listn(editor) {
    var _this = this;
    this.editor = editor;
    this.$elem = $('<div class="w-e-menu"><i class="w-e-icon-list2"></i></div>');
    this.type = 'click';
    // 当前是否 active 状态
    this._active = false;
}
// 原型
Listn.prototype = {
    constructor: Listn,
    // 执行命令
    onClick: function onClick(e) {
        var editor = this.editor;
        var $textElem = editor.$textElem;
        editor.cmd.do('insertUnorderedList');
        // 验证列表是否被包裹在 <p> 之内
        var $selectionElem = editor.selection.getSelectionContainerElem();
        if ($selectionElem.getNodeName() === 'LI') {
            $selectionElem = $selectionElem.parent();
        }
        if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) {
            return;
        }
        if ($selectionElem.equal($textElem)) {
            // 证明是顶级标签,没有被 <p> 包裹
            return;
        }
        var $parent = $selectionElem.parent();
        if ($parent.equal($textElem)) {
            // $parent 是顶级标签,不能删除
            return;
        }
        $selectionElem.insertAfter($parent);
        $parent.remove();
    },
    // 试图改变 active 状态
    tryChangeActive: function tryChangeActive(e) {
        var editor = this.editor;
        var $elem = this.$elem;
        if (editor.cmd.queryCommandState('insertUnOrderedList')) {
            this._active = true;
            $elem.addClass('w-e-active');
        } else {
            this._active = false;
            $elem.removeClass('w-e-active');
        }
    }
};
MenuConstructors.list = List;
MenuConstructors.listn = Listn;

效果图

图片.png

扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由红柚酱发布,如需转载请注明出处。

转载请注明出处:https://www.notenet.cn/post/84.html

标签: wangEditor3

相关文章

JavaScript动态显示可输入的字数提示还可以输入的字数

JavaScript动态显示可输入的字数提示还可以输入的字数

<!DOCTYPE html> <html> <head>     <meta charse...

阿里云,腾讯云Linux服务器如何安装宝塔面板?

阿里云,腾讯云Linux服务器如何安装宝塔面板?

为什么要安装宝塔Linux面板呢,因为对于新手接触服务器来说,不知道到底该做什么,下载宝塔Linux面板的话,操作什么我们都一目了然了。宝塔安装前言环境要求Linux面板环境要求宝塔Linux面板支持...

laravel ci TP3 TP5各个php开发框架的优缺点

laravel ci TP3 TP5各个php开发框架的优缺点

   laravel的优缺点:    【优点】:     1. 代码简洁优雅 &nbs...

配置Nginx支持pathinfo模式

配置Nginx支持pathinfo模式

pathinfo是伪静态的一种,先解释一下伪静态的概念,伪静态页面是静态URL与动态URL互通的一个桥梁,它是指动态网址通过URL重写的手段去掉其动态参数,使URL静态化,但在实际的网页目录中并没有重...

jquery正则表达式验证(手机号、身份证号、中文名称)

jquery正则表达式验证(手机号、身份证号、中文名称)

jquery正则表达式验证,实现手机号、身份证号、中文名称等验证,具体内容如下HTML(表单):<form action="">  <div...