博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript - ExtJs - 整合百度文章编辑器
阅读量:6772 次
发布时间:2019-06-26

本文共 6961 字,大约阅读时间需要 23 分钟。

ExtJs - 整合百度文章编辑器(ExtJs UEditor)

第一步:去官网下载最新版本的UEditor,。

第二步:在编辑器根目录创建一个Extjs-Editor.js,录入以下代码。

目录结构如下

  

Ext.define('App.ux.UEditor', {    extend: 'Ext.form.field.Text',    alias: ['widget.ueditor'],    //alternateClassName: 'Ext.form.UEditor',    fieldSubTpl: [        '',        {            disableFormats: true        }    ],    ueditorConfig: {},    initComponent: function () {        var me = this;        me.callParent(arguments);    },    afterRender: function () {        var me = this;        me.callParent(arguments);        if (!me.ue) {            //编辑器各项参数配置,参考UEditor.config.js            me.ue = UE.getEditor(me.getInputId(), Ext.apply(me.ueditorConfig, {                //编辑器高度,可在此处修改,但不要在表单配置中修改,否则滚动条出现后工具栏会消失                initialFrameHeight:320,                initialFrameWidth: '100%',                autoHeightEnabled: false,                enableAutoSave: false,                saveInterval:0            }));            me.ue.ready(function () {                me.UEditorIsReady = true;            });            //这块 组件的父容器关闭的时候 需要销毁编辑器 否则第二次渲染的时候会出问题 可根据具体布局调整            var win = me.up('window');            if (win && win.closeAction == "hide") {                win.on('beforehide', function () {                    me.onDestroy();                });            } else {                var panel = me.up('panel');                if (panel && panel.closeAction == "hide") {                    panel.on('beforehide', function () {                        me.onDestroy();                    });                }            }        } else {            me.ue.setContent(me.getValue());        }    },    //返回编辑器实例    getEditor:function(){        var me=this;        return UE.getEditor(me.getInputId());    },    setValue: function (value) {        var me = this;        if (!me.ue) {            me.setRawValue(me.valueToRaw(value));        } else {            me.ue.ready(function () {                me.ue.setContent(value);            });        }        me.callParent(arguments);        return me.mixins.field.setValue.call(me, value);    },    getRawValue: function () {        var me = this;        if (me.UEditorIsReady) {            me.ue.sync(me.getInputId());        }        v = (me.inputEl ? me.inputEl.getValue() : Ext.value(me.rawValue, ''));        me.rawValue = v;        return v;    },    destroyUEditor: function () {        var me = this;        if (me.rendered) {            try {                me.ue.destroy();                var dom = document.getElementById(me.id);                if (dom) {                    dom.parentNode.removeChild(dom);                }                me.ue = null;            } catch (e) { }        }    },    onDestroy: function () {        var me = this;        me.callParent();        me.destroyUEditor();    }});
View Code

第三步:引入以下文件 (前三个是Extjs必须的文件,后三个是编辑器要使用的文件)

第四部:创建formPanel 

Ext.onReady(function () {    //展开树的按钮    Ext.create("Ext.button.Button", {        id:"treeBtn",text: "选择父栏目", style: "background:red;border:none;", icon: "../Image/expand.png",        handler: function () {            this.border = false;            var  columnLabel=Ext.getCmp("columnLabel")            var treepanel = Ext.getCmp("dataTree");            if (!window.counter) { window.counter = 1; }            if (window.counter % 2 != 0) {                treepanel.show();//显示树                this.setIcon("../Image/expand.png");            }            else {                treepanel.hide();//隐藏树                this.setIcon("../Image/expand-down.png");            }            window.counter += 1;        }    });    Ext.create("Ext.form.FormPanel", {        id:"articleForm",        renderTo: "articleEditor",        title: '写文章',        width: 1000,        style: "padding:10px;",        frame: false,        border: false,        buttonAlign: "center",        items: [            {                xtype: "fieldset",                layout: "column",                defaultType: "textfield",                style:"margin-top:10px",                width: 950,                border: false,                fieldDefaults: {                    labelWidth: 40,                    labelAlign: "left"                },                items: [                        { fieldLabel: "标  题", name:"contenTitle",width: 930, }                ]            },            {                xtype: "fieldset",                layout: "column",                defaultType: "textfield",                style: "margin-top:10px",                width: 950,                border: false,                fieldDefaults: {                    labelWidth: 40,                    labelAlign: "left"                },                items: [                        { fieldLabel: "作  者", name: "contenAuthor", width: 930 }                ]            },            {                xtype: "fieldset",                layout: "column",                defaultType: "textfield",                width: 950,                height:450,                border: false,                fieldDefaults: {                    labelWidth: 40,                    labelAlign: "left"                },                //编辑器                items: [                    {                        xtype: 'ueditor',                        fieldLabel: '内  容',                        id: "content",                        //不要设置高度,否则滚动条出现后工具栏会消失                        width: 930                    }                ]            }        ],        buttons: [                { text: 'OK', style: "margin-top:20px", handler: function () {  } },                { text: "Cancel", style: "margin-top:20px", handler: function () { form.reset(); } }        ]    });});
View Code

获取编辑器的值

Extjs-Editor.js中我定义了一个返回UEditor实例的方法,如下: 

getEditor:function(){        var me=this;        return UE.getEditor(me.getInputId());}

获取编辑器中的值

要设置编辑器的其它项或获取html值等操作,可参考编辑器根目录下的Index.html源码。这里给个例子,比如获取纯文本:

//找到表单面板中的表单,再find文本框,调用getEditor()即可获得编辑器实例,getContentTxt()获得纯文本Ext.getCmp("articleForm").getForm().findField("content").getEditor().getContentTxt()
View Code

解决下拉框不显示选项的问题

打开编辑器根目录,搜索ueditor.config.js,打开该文件,查找被注释掉的zIndex,把值改为1100000同时去掉注释保存,问题解决。注:以下提供的包是已经更改过zIndex的文件。

 

转载于:https://www.cnblogs.com/myrocknroll/p/7209033.html

你可能感兴趣的文章
管理Configuration Manager客户端
查看>>
glance rabbit
查看>>
8623错误:The query processor ran out of internal resources and could not pro
查看>>
JAVA读写文本文件的效率
查看>>
Exchange Server 2013中DAG无法添加成员问题排错
查看>>
自动加域--Script
查看>>
使用测试工具进行HTTP测试。
查看>>
清除severe.exe病毒
查看>>
Windows 10 之设置URL汇总
查看>>
2-16 用户自定义控件
查看>>
Windows下的磁盘管理(四)
查看>>
细品慢酌QuickTest关键视图(4)
查看>>
DEDECMS Deprecated: Function ereg_replace() is deprecated错误提示解决方法
查看>>
也许table布局专为form表单布局而生?
查看>>
VMware无法与物理机连通Could not connect Ethernet0 to virtual network "VMnet8"完美解决
查看>>
SAP R3 用系统自带的功能查看后台数据库数据 SE16
查看>>
find方法
查看>>
Windows Server 2008更改远程桌面端口需注意的地方
查看>>
实现让Lync client也能够"潜水"隐身聊天
查看>>
DOM4J介绍与代码示例
查看>>