版本: 1.4
<script type="text/javascript" charset="utf-8" src="ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="ueditor.all.min.js"> </script> <!--建議手動加在語言,避免在ie下有時由於加載語言失敗致使編輯器加載失敗--> <!--這裏加載的語言文件會覆蓋你在配置項目裏添加的語言類型,好比你在配置項目裏配置的是英文,這裏加載的中文,那最後就是中文--> <script type="text/javascript" charset="utf-8" src="lang/zh-cn/zh-cn.js"></script> <script type="text/javascript" charset="utf-8" src="quote.js"> </script>
新建jsjavascript
UE.registerUI('quote', function (editor, uiName) { var btn = new UE.ui.Button({ //按鈕的名字 name: uiName, //提示 title: uiName, //須要添加的額外樣式,指定icon圖標,這裏默認使用一個重複的icon cssRules: 'background-position: -500px 0;', //點擊時執行的命令 onclick: function () { //這裏能夠不用執行命令,作你本身的操做也可 editor.execCommand('inserthtml', '<span>哈哈哈哈哈哈</span>') } }); //由於你是添加button,因此須要返回這個button return btn; })
var dialog = new UE.ui.Dialog({ iframeUrl: editor.options.UEDITOR_HOME_URL + 'dialogs/popup.html', // url name: 'popup', editor: editor, title: '寫入批註', // iframe title cssRules: "width:600px;height:260px;", // iframe 寬高 buttons: [ { className: 'edui-okbutton', label: '肯定', onclick: function () { dialog.close(true); editor.execCommand('html'); } }, { className: 'edui-cancelbutton', label: '取消', onclick: function () { dialog.close(false); } }] }) dialog.render(); // 渲染 dialog.open(); // 打開
var popup = new baidu.editor.ui.Popup({ editor: this, content: '', className: 'edui-bubble', _edittext: function () { baidu.editor.plugins[thePlugins].editdom = popup.anchorEl; me.execCommand(thePlugins); this.hide(); }, _delete: function () { if (window.confirm('確認刪除該控件嗎?')) { baidu.editor.dom.domUtils.remove(this.anchorEl, false); } this.hide(); } }) popup.render();
<nobr>文本框: <span onclick=$$._edittext() class="edui-clickable">編輯</span> <
中的$$含義?html
全局查找得知:java
baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global:{}};
以前registerUI
註冊UI開發, 爲了實現更復雜的效果,使用plugins
註冊node
UE.plugins['quote'] = function() { var me = this,thePlugins = 'quote'; me.commands[thePlugins] = { execCommand: function () { } } }
在彈窗所屬的html
中,已經全局暴露了一個dialog
對象,就是以前new的new UE.ui.Dialog
.dialog
有一些鉤子和方法:git
var oNode = null, thePlugins = 'quote'; window.onload = function () { if (UE.plugins[thePlugins].editdom) { oNode = UE.plugins[thePlugins].editdom; var gValue = oNode.getAttribute('value').replace(/"/g, "\""); gValue = gValue == null ? '' : gValue; $G('orgvalue').value = gValue; } } dialog.oncancel = function () { if (UE.plugins[thePlugins].editdom) { delete UE.plugins[thePlugins].editdom; } } dialog.onok = function () { if($G('orgvalue').value.trim() == '') { alert('請輸入批註內容') return false; } var gValue=$G('orgvalue').value.replace(/\"/g,"""); }
須要引入百度的工具文件github
<script type="text/javascript" src="../dialogs/internal.js"></script>
相似$G
都是工具文件裏定義的封裝函數web
div
會被解析成p
標籤,順帶style
script
也被屏蔽了。
ueditor.all.js
搜索 allowDivTransToP
設置爲false
addInputRule
方法中的style
script
的case註釋掉直接更改了ueditor.all.js中的源碼,至關不友好,只是目前沒找到其餘搞法json
UE.editor
上並無修改選中字符串的方法。api
var range = UE.getEditor('editor').selection.getRange(); range.select(); var node = document.createTextNode('你說你想要逃'); ue.selection.getRange().deleteContents().insertNode(node)
老實說:這個ueditor API比官網的全太多了,官網沒有記錄的API方法,這兒都能查到
使用命令來使用,由於命令能夠有撤回和前進操做
命令名稱必須是小寫!!!
me.commands['quoteupdate'] = { execCommand: function (str) { console.log(str) var range = this.selection.getRange(); range.select(); var node = document.createTextNode('你說你想要逃'); this.selection.getRange().deleteContents().insertNode(node) } }
// obj: 排序的json對象, key: 排序的key值 function sort(obj, key) { var arr = [] for (var item in obj) { var current = obj[item] if (arr.length === 0 && current[key]) { arr.push(current) } else { var pos = arr.length - 1 var index = 0; while (pos >= 0) { if (arr[pos][key] < current[key]) { arr.splice(pos + 1, 0, current) break; } else { if (pos == 0) arr.splice(pos, 0, current) } pos--; } } } return arr; } function changeAndCalculator(store) { // 調用排序函數 var arr = sort(store, 'top') html = '<ul id="orgQuote" contenteditable="false" style="' + stylee + '">' arr.forEach(function (v, i) { var style = [] style.push('margin: 10px 0; padding: 10px; border: 1px solid #eee;') style.push('background: linear-gradient(0deg, #fafafa, #f8f8f8);') if (i == 0 || (i > 0 && v.top - 45 > arr[i - 1].top)) { style.push('position: absolute; top:' + v.top + 'px;transition: all 1s;') } else { v.top = arr[i - 1].top + 45 style.push('position: absolute; top:' + v.top + 'px;transition: all 1s;') } html += '<div style="' + style.join('') + '">' + v.value + '</div>' }) html += '</ul>' UE.getEditor('editor').setContent(html + olddom) }