版本: 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>
新建js
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> <
中的$$寄义?
全局查找得知:
baidu.$$ = window[baidu.guid] = window[baidu.guid] || {global:{}};
注册插件情势开辟
之前registerUI
注册UI开辟, 为了完成更庞杂的结果,运用plugins
注册
UE.plugins['quote'] = function() {
var me = this,thePlugins = 'quote';
me.commands[thePlugins] = {
execCommand: function () {
}
}
}
天生弹窗后的值怎样猎取推断?
在弹窗所属的html
中,已全局暴露了一个dialog
对象,就是之前new的new UE.ui.Dialog
.dialog
有一些钩子和要领:
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,""");
}
须要引入百度的东西文件
<script type="text/javascript" src="../dialogs/internal.js"></script>
相似$G
都是东西文件里定义的封装函数
消除html划定规矩过滤
div
会被剖析成
p
标签,顺带
style
script
也被屏障了。
-
ueditor.all.js
搜刮allowDivTransToP
设置为false
-
addInputRule
要领中的style
script
的case解释掉
直接更改了ueditor.all.js中的源码,相称不友好,只是现在没找到其他搞法
替代选中的字符串
UE.editor
上并没有修正选中字符串的要领。
- range.deleteContents(); 删除选区的内容
- range.insertNode(); 新增node节点 能够是TextNode ElementNode fragment
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)
}