ueditor插件簡單使用


下載地址:http://ueditor.baidu.com/website/download.html

建議同時下載所需版本及完整源碼。   [ 1.4.3 JSP + 完整源碼src ]

 


 

簡單配置說明

解壓JSP版,放置項目中。

1,引入所需文件;

 

<@script type="text/javascript" src="${page.url.context}/res/components/ueditor/ueditor.config.js"></@script>
<@script type="text/javascript" src="${page.url.context}/res/components/ueditor/ueditor.all.js"></@script>
<@script type="text/javascript" src="${page.url.context}/res/components/ueditor/lang/zh-cn/zh-cn.js"></@script>

 

2,實例化編輯器;

方法一:

 

<body>

    <div>
        <script id="editor" type="text/plain"></script>
    </div>

</body>
<script type="text/javascript">
    var ue = UE.getEditor( 'editor',{
        autoHeightEnabled: true,

        autoFloatEnabled: true,

        initialFrameWidth: 690,

        initialFrameHeight:483
        
    });
</script>
View Code

 

 

方法二:

<textarea name="后台取值的key" id="myEditor">這里寫你的初始化內容</textarea> 

var editor = new UE.ui.Editor(); 

editor.render("myEditor");
View Code

效果圖;

通過ueditor.config.js文件簡單進行自己所需配置。

 


 

自定義按鈕

 

 

 1,將addCustomizeButton.js文件拷貝至項目,引入。(解壓完整源碼包_examples目錄可找到該文件)

<@script type="text/javascript" src="${page.url.context}/res/components/ueditor/addCustomizeButton.js"></@script>
根據注釋修改addCustomizeButton.js文件,(以下自定義添加圖片按鈕)
// 如果要注冊多個按鈕以空格標識隔開,例如注冊按鈕1 按鈕2 按鈕3  UE.registerUI('1 2 3',function(editor,uiName){}
UE.registerUI('\u63d2\u5165\u56fe\u7247',function(editor,uiName){

    //上傳成功回調函數
    var onFileUploadComplete = function(res)
    {
        var length = res.successful.length;
        if( length > 0 )
        {
            var nodes = res.successful;
            for (var i = 0 ; i < nodes.length ; i++)
            {
                var url = Alfresco.constants.PROXY_URI;
                var nodeID = nodes[i].nodeRef.replace("workspace://SpacesStore/","api/node/workspace/SpacesStore/");
                url = url + nodeID + "/content/doclib?c=force&ph=true";
                //追加編輯器預覽圖片效果
                editor.setContent('<img style="width:650px;" src="'+url+'" alt="'+nodes[i].fileName+'" title="'+nodes[i].fileName+'"/>',true);
                //editor.setContent("content...",boolean); 如果boolean為true ,追加編輯器內容,否則編輯器內容寫入。
            }
        }
    };
    //注冊按鈕執行時的command命令,使用命令默認就會帶有回退操作
    editor.registerCommand(uiName,{
        execCommand:function(){
            //alert('execCommand:' + uiName)

            // TODO self something
            this.fileUpload = Alfresco.getFileUploadInstance();
            var multiUploadConfig = {
                //destination:"workspace://SpacesStore/56b62ff0-d06d-4928-ba7a-7c4e4a17aaab",
                destination: "JY",
                thumbnails: "doclib",
                filter: [//限制只能上傳*.jpg;*.png;*.gif
                {
                    description:"images", 
                    extensions:"*.jpg;*.png;*.gif"
                }],
                mode: this.fileUpload.MODE_MULTI_UPLOAD_FUJIAN,
                viewdetail:false,
                onFileUploadComplete: {
                    fn: onFileUploadComplete,
                    scope: this
                }
            };
            this.fileUpload.show(multiUploadConfig);
        }
    });

    //創建一個button
    var btn = new UE.ui.Button({
        //按鈕的名字
        name:uiName,
        //提示
        title:uiName,
        //需要添加的額外樣式,指定icon圖標,這里默認使用一個重復的icon
        cssRules :'background-position: -726px -77px;',// 使用多圖上傳icon
        //點擊時執行的命令
        onclick:function () {
            //這里可以不用執行命令,做你自己的操作也可
           editor.execCommand(uiName);
        }
    });

    //當點到編輯內容上時,按鈕要做的狀態反射
    editor.addListener('selectionchange', function () {
        var state = editor.queryCommandState(uiName);
        if (state == -1) {
            btn.setDisabled(true);
            btn.setChecked(false);
        } else {
            btn.setDisabled(false);
            btn.setChecked(state);
        }
    });

    //因為你是添加button,所以需要返回這個button
    return btn;
}/*index 指定添加到工具欄上的那個位置,默認時追加到最后,editorId 指定這個UI是那個編輯器實例上的,默認是頁面上所有的編輯器都會添加這個按鈕*/);
View Code

效果圖;

 


UEditor1.4.3版本存在系列問題處理:

1,啟動自動保存;enableAutoSave: false設置無效。解決辦法;修改ueditor.all.js文件;添加代碼:if (!me.getOpt('enableAutoSave')) {return;}

'contentchange': function () {
                // 去掉本地保存 1.4.3 enableAutoSave: false設置無效
                if (!me.getOpt('enableAutoSave')) {
                    return;
                }
                //
                if ( !saveKey ) {
                    return;
                }

                if ( me._saveFlag ) {
                    window.clearTimeout( me._saveFlag );
                }

                if ( me.options.saveInterval > 0 ) {

                    me._saveFlag = window.setTimeout( function () {

                        save( me );

                    }, me.options.saveInterval );

                } else {

                    save(me);

                }


            }
View Code

2,插入表格保存后,獲取保存內容預覽表格邊框不顯示。修改ueditor.all.js文件以下幾處。

UE.commands['inserttable'] = {
        queryCommandState: function () {
            return getTableItemsByRange(this).table ? -1 : 0;
        },
        execCommand: function (cmd, opt) {
            function createTable(opt, tdWidth) {
                var html = [],
                    rowsNum = opt.numRows,
                    colsNum = opt.numCols;
                for (var r = 0; r < rowsNum; r++) {
                    html.push('<tr' + (r == 0 ? ' class="firstRow"':'') + '>');
                    /* old code
                    for (var c = 0; c < colsNum; c++) {
                        html.push('<td width="' + tdWidth + '"  vAlign="' + opt.tdvalign + '" >' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '<br/>') + '</td>')
                    }*/

                    // new code
                    for (var c = 0; c < colsNum; c++) {
                        html.push('<td style="border:1px solid #ccc;" width="' + tdWidth + '"  vAlign="' + opt.tdvalign + '" >' + (browser.ie ? domUtils.fillChar : '<br/>') + '</td>')
                    }
                    
                    html.push('</tr>')
                }
                //禁止指定table-width

                // old code
                //return '<table><tbody>' + html.join('') + '</tbody></table>' 

                // new code
                return '<table style="border-collapse:collapse;"><tbody>' + html.join('') + '</tbody></table>' 
            }

            if (!opt) {
                opt = utils.extend({}, {
                    numCols: this.options.defaultCols,
                    numRows: this.options.defaultRows,
                    tdvalign: this.options.tdvalign
                })
            }
            var me = this;
            var range = this.selection.getRange(),
                start = range.startContainer,
                firstParentBlock = domUtils.findParent(start, function (node) {
                    return domUtils.isBlockElm(node);
                }, true) || me.body;

            var defaultValue = getDefaultValue(me),
                tableWidth = firstParentBlock.offsetWidth,
                tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder);

            //todo其他屬性
            !opt.tdvalign && (opt.tdvalign = me.options.tdvalign);
            me.execCommand("inserthtml", createTable(opt, tdWidth));
        }
    };
View Code
//設置表格可排序,清除表格可排序
    UE.commands["enablesort"] = UE.commands["disablesort"] = {
        queryCommandState: function (cmd) {
            var table = getTableItemsByRange(this).table;
            if(table && cmd=='enablesort') {
                var cells = domUtils.getElementsByTagName(table, 'th td');
                for(var i = 0; i<cells.length; i++) {
                    if(cells[i].getAttribute('colspan')>1 || cells[i].getAttribute('rowspan')>1) return -1;
                }
            }

            return !table ? -1: cmd=='enablesort' ^ table.getAttribute('data-sort')!='sortEnabled' ? -1:0;
        },
        execCommand: function (cmd) {
            var table = getTableItemsByRange(this).table;
            table.setAttribute("data-sort", cmd == "enablesort" ? "sortEnabled" : "sortDisabled");
            
            table.setAttribute("style", "border-collapse:collapse;");// append new code

            cmd == "enablesort" ? domUtils.addClass(table,"sortEnabled"):domUtils.removeClasses(table,"sortEnabled");
        }
    };
};
View Code

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM