diff --git a/src/iceEditor.all.js b/src/iceEditor.all.js deleted file mode 100644 index 3f99fe1..0000000 --- a/src/iceEditor.all.js +++ /dev/null @@ -1,1128 +0,0 @@ -/** - +------------------------------------------------------------------------------------+ - + iceEditor(富文本编辑器) - +------------------------------------------------------------------------------------+ - + iceEditor v1.1.8 - * MIT License By www.iceui.net - + 作者:ice - + 官方:www.iceui.net - + 时间:2020-07-25 - +------------------------------------------------------------------------------------+ - + 版权声明:该版权完全归iceUI官方所有,可转载使用和学习,但请务必保留版权信息 - +------------------------------------------------------------------------------------+ - + iceEditor是一款简约风格的富文本编辑器,体型十分娇小,无任何依赖,整个编辑器只有一个 - + 文件,功能却很不平凡!简约的唯美设计,简洁、极速、使用它的时候不需要引用jQuery、font - + css……等文件,因为整个编辑器只是一个Js,支持上传图片、附件!支持添加音乐、视频! - +------------------------------------------------------------------------------------+ -*/ -'use strict'; -var ice = ice || {}; -ice.editor = function(id){ - - //------------------------参数配置 开始------------------------ - // 工具栏菜单 - this.menu=[ - 'backColor','fontSize','foreColor','bold','italic','underline','strikeThrough','line','justifyLeft', - 'justifyCenter','justifyRight','indent','outdent','line','insertOrderedList','insertUnorderedList','line','superscript', - 'subscript','createLink','unlink','line','hr','table','files','music','video','insertImage', - 'removeFormat','line','code' - ]; - // 文字背景颜色 - this.backColor = [ - '#ffffff','#000000','#eeece1','#1f497d','#4f81bd','#c0504d','#9bbb59','#8064a2','#4bacc6','#f79646', - '#f2f2f2','#979797','#ddd9c3','#c6d9f0','#dbe5f1','#f2dcdb','#ebf1dd','#e5e0ec','#dbeef3','#fdeada', - '#d8d8d8','#595959','#c4bd97','#8db3e2','#b8cce4','#e5b9b7','#d7e3bc','#ccc1d9','#b7dde8','#fbd5b5', - '#bfbfbf','#3f3f3f','#938953','#548dd4','#95b3d7','#d99694','#c3d69b','#b2a2c7','#92cddc','#fac08f', - '#a5a5a5','#262626','#494429','#17365d','#366092','#953734','#76923c','#5f497a','#31859b','#e36c09', - '#7f7f7f','#0c0c0c','#1d1b10','#0f243e','#244061','#632423','#4f6128','#3f3151','#205867','#974806', - '#c00000','#ff0000','#ffc000','#ffff00','#92d050','#00b050','#00b0f0','#0070c0','#002060','#7030a0' - ]; - //文字颜色 - this.foreColor = this.backColor; - //编辑器的尺寸 - this.width='100%'; - this.height='400px'; - //查看源码 - this.code=0; - //窗口最大化和最小化 - this.maxWindow=1; - //编辑器禁用 - this.disabled=0; - //编辑器样式 - this.css = ''; - //图片和附件提交地址 - this.uploadUrl=0; - //截图粘贴启用 - this.screenshot=1; - //截图粘贴直接上传到服务期 - this.screenshotUpload=1; - this.ajax.uploadTimeout = 15000; //ajax超时时间 - this.ajax.xhr = function(){}; //ajax超时时间 - this.ajax.timeout = function(){}; //ajax超时回调 - this.ajax.success = function(){}; //ajax成功回调 - this.ajax.error = function(){}; //ajax失败回调 - this.ajax.progress = function(){}; //ajax进度回调 - //HTML标签过滤黑名单-忽略粘贴过来的HTML标签 - this.htmlTag=['meta','style','script','object','form','iframe']; - //HTML标签 将该块级元素标签同意格式化为p标签 - this.formatTag=['address','caption','dd','div','dl','dt','fieldset','h1','h2','h3','h4','h5','h6','legend','fieldset','li','noframes','noscript','ol','ul','p','pre','table','tbody','tfoot','th','thead','tr']; - //------------------------参数配置 结束------------------------ - //构建功能模块唯一id - this.getTime ='1'+ String(new Date().getTime()).substr(4,8); - this.iframeId = '_iframe'+this.getTime; - this.toolId = '_tool'+this.getTime; - this.linkId = '_link'+this.getTime; - this.linkInputId = '_LinkInput'+this.getTime; - this.musicId = '_music'+this.getTime; - this.musicInputId = '_musicInput'+this.getTime; - this.videoId = '_video'+this.getTime; - this.imageId = '_image'+this.getTime; - this.imgUploadId = '_imgUpload'+this.getTime; - this.filesId = '_files'+this.getTime; - this.filesUploadId = '_filesUpload'+this.getTime; - this.tableId = '_table'+this.getTime; - this.dragId = '_drag'+this.getTime; - - //菜单列表对象 - this.menuList={}; - - //获取编辑器对象 - var _z=this; - this.editor = this.id(id); - if(!this.editor) return alert('请提供一个有效的id'); - this.textarea = 0; - // 只能是 textarea 和 div ,其他类型的元素不行 - if (this.editor.nodeName !== 'TEXTAREA' && this.editor.nodeName !== 'DIV') { - return console.log('暂不支持该标签-->'+this.editor.nodeName+' 推荐使用div'); - } - if(this.editor.nodeName == 'TEXTAREA'){ - this.editor.style.display='none'; - this.divId = '_div'+this.getTime; - var div = this.c('div'); - div.className='iceEditor'; - div.id=this.divId; - this.insertAfter(div,this.editor); - - //加载编辑器的内容 - this.textarea = this.editor; - this.editor = this.id(this.divId); - this.value = this.textarea.value; - }else{ - this.editor.className='iceEditor'; - this.value = this.editor.innerHTML; - this.editor.innerHTML=''; - } - - //创建编辑器配置样式 - this.cssConfig = this.c('style'); - this.cssConfig.type='text/css'; - this.editor.appendChild(this.cssConfig); - - //创建编辑器菜单栏 - this.tool = this.c('div'); - this.tool.id=this.toolId; - this.tool.className='iceEditor-tool iceEditor-noselect'; - this.editor.appendChild(this.tool); - - //创建iframe - this.iframe = this.c('iframe'); - this.iframe.id=this.iframeId; - this.iframe.className='iceEditor-noselect'; - this.iframe.frameBorder=0; - this.editor.appendChild(this.iframe); - - //创建可拖拽层 - this.dragBg = this.c('div'); - this.dragBg.className='iceEditor-dragBg'; - this.editor.appendChild(this.dragBg); - - //创建编辑器的高度可拖拽容器 - this.drag = this.c('div'); - this.drag.id=this.dragId; - this.drag.className='iceEditor-drag iceEditor-noselect'; - this.drag.innerHTML=''; - this.editor.appendChild(this.drag); - - //编辑器拖拽增高 - this.drag.onmousedown=function(){ - _z.dragBg.style.display='block'; - var y = event.clientY; - var ch = _z.iframe.clientHeight; - window.onmousemove=function(){ - var h = event.clientY - y; - if(ch>=100){ - _z.iframe.height = ch + h + 'px'; - _z.height=ch + h + 'px'; - }else{ - _z.iframe.height = '100px'; - _z.height=ch + h + 'px'; - } - } - window.onmouseup = function(){window.onmousemove = null;window.onmouseup = null;_z.dragBg.style.display='none';} - } - - //创建禁用编辑器的遮罩 - this.disableds = this.c('div'); - this.disableds.className='iceEditor-disabled'; - this.editor.appendChild(this.disableds); - - //获取iframe对象 - this.w = this.iframe.contentWindow; //获取iframe Window 对象 - this.d = this.iframe.contentDocument; //获取iframe documen 对象 - - //为了兼容万恶的IE 创建iframe中的body - this.d.open(); - var value = this.value.trim(); - if(!value.length || value.substr(0,3) != '

') value = '

'+this.value+'

'; - this.d.write(''+value+''); - this.d.close(); - - // 设置元素为可编辑 - this.d.body.designMode = 'On'; //打开设计模式 - this.d.body.contentEditable = true;// 设置元素为可编辑 - this.d.body.addEventListener('click',function(){ - _z.parentTagName = _z.range.anchorNode.parentNode.tagName; - for(var i=0;i<_z.menu.length;i++){ - if(_z.d.queryCommandState(_z.menu[i])){ - _z.menuList[_z.menu[i]].className = 'iceEditor-actives'; - }else{ - _z.menuList[_z.menu[i]].className = ''; - } - } - }) - - //内容区 - this.content = this.d.body; - - //改变textarea内容 - if(this.textarea){ - setInterval(function(){ - var html = _z.code?_z.html(_z.getHTML()):_z.getHTML(); - var c = _z.c('p'); //为了将pre标签内的
改为换行符 - c.innerHTML = html; - var pre = c.getElementsByTagName('pre'); - for(var s=0;s/g,"\n"); - _z.textarea.innerHTML = _z.unhtml(c.innerHTML); - },1000); - } - - this.init(); //初始化参数 - this.create(); //创建编辑器 - this.paste(); //监听粘贴 -} -//光标控制器 -ice.editor.prototype={ - id:function(a){return document.getElementById(a)}, - c:function(a){return document.createElement(a)}, - //初始化参数 - init:function(){ - this.files=null; - this.insertImage=null; - this.element=this.d.body; - //this.element.focus(); //默认获取焦点 - this.range=this.d.createRange?this.w.getSelection():this.d.selection.createRange(); - }, - //dom后面插入节点 - insertAfter:function(n,obj){ - var parent = obj.parentNode; - if(parent.lastChild == obj){ - parent.appendChild(n,obj); - }else{ - parent.insertBefore(n,obj.nextSibling); - } - }, - //插入HTML - setHTML:function(html,a){ - this.element.focus(); - var range = this.range.getRangeAt(0); - //将选中的文档放在html中的DOM内 - if(!a)html.appendChild(range.extractContents()); - //删除选中的内容 - range.deleteContents(); - //创建文档碎片并放入新节点 - range.insertNode(this.w.document.createDocumentFragment().appendChild(html));//合并范围至末尾 - //合并范围至末尾 - range.collapse(false); - }, - //插入文字内容 - setText:function(text,a){ - this.element.focus(); - var range = this.range.getRangeAt(0); - range.deleteContents(); - var el = document.createElement('div'); - if(a){//是否为html - el.innerHTML = text; - }else{ - el.appendChild(document.createTextNode(text)); - } - var frag = document.createDocumentFragment(), node, lastNode; - while((node = el.firstChild)){ - lastNode = frag.appendChild(node); - } - range.insertNode(frag); - if(lastNode){ - range = range.cloneRange(); - range.setStartAfter(lastNode); - range.collapse(true); - this.range.removeAllRanges(); - this.range.addRange(range); - } - }, - //获取选中的HTML - getSelectHTML:function(){ - var p = this.c('p'); - p.appendChild(this.range.getRangeAt(0).cloneContents()); - return p.innerHTML; - }, - //获取选中的内容 - getSelectText:function(){ - if(this.range.toString()=='false' || this.range.toString()==''){ - return ''; - }else{ - return this.range.toString(); - } - }, - unhtml:function(str){ - var s = ''; - if (str.length == 0) return ''; - s = str.replace(/&/g, "&"); - s = s.replace(//g, ">"); - s = s.replace(/\'/g, "'"); - s = s.replace(/\"/g, """); - return s; - }, - html:function(str){ - var s = ''; - if (str.length == 0) return ''; - s = str.replace(/</g, "<"); - s = s.replace(/>/g, ">"); - s = s.replace(/'/g, "\'"); - s = s.replace(/"/g, "\""); - s = s.replace(/&/g, "&"); - return s; - }, - //转义:HTML转成字符串 - toText:function(html){ - var temp = this.c('div'); - (temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html); - var output = temp.innerHTML; - temp = null; - return output; - }, - //转义:字符串转成HTML - toHTML:function(text){ - var temp = this.c('div'); - temp.innerHTML = text; - var output = temp.innerText || temp.textContent; - temp = null; - return output; - }, - //判断祖先节点是否存在 - inNodeParent:function(el,parent) { - if(!el) return false; - if(el.parentNode){ - if(typeof parent == 'string'){ - parent = parent.toUpperCase(); - if(el.tagName == parent) return true; - return el.parentNode.tagName == parent ? true : this.inNodeParent(el.parentNode,parent); - }else{ - return el.parentNode == parent ? true : this.inNodeParent(el.parentNode,parent); - } - } - return false; - }, - //数组查询 - inArray:function(needle,array){ - if(typeof needle=='string'||typeof needle=='number'){ - for(var i in array)if(needle===array[i])return true; - return false; - } - }, - // 获取 range 对象 - getRange: function getRange() { - return this.range.getRangeAt(0); - }, - //弹窗 - popup:function(options){ - options = options || {}; - var width = options.width || '400'; //默认宽度 - var height = options.height || '200'; //默认高度 - var title = options.title || ''; //默认不显示标题 - var content = options.content || ''; //默认内容 - return '
' + title + '
' + content +'
'; - }, - //获取对象距离窗口页面的顶部和左部的距离 - getCoords:function(el){ - var box = el.getBoundingClientRect(), - doc = el.ownerDocument, - body = doc.body, - html = doc.documentElement, - clientTop = html.clientTop || body.clientTop || 0, - clientLeft = html.clientLeft || body.clientLeft || 0, - top = box.top - clientTop, - left = box.left - clientLeft; - return { 'top': top, 'left': left }; - }, - //阻止冒泡 - pd:function(event){ - window.event ? window.event.cancelBubble = true : e.stopPropagation(); - }, - //是否为ie - isIE:function(){return !!window.ActiveXObject || "ActiveXObject" in window}, - //异步请求 - ajax:function(json){ - var _z = this; - json = json || {}; - if (!json.url) return; - json.timeout = json.timeout || _z.ajax.uploadTimeout; - json.data = json.data || {}; - - //创建 - var xhr = new XMLHttpRequest(); - //xhr.withCredentials = false; - //连接 和 发送 - 第二步 - - //监听进度事件 - xhr.addEventListener('progress', progress, false); - - xhr.open('POST', json.url, true); - //设置表单提交时的内容类型 - xhr.setRequestHeader('X-Requested-With','XMLHttpRequest'); - //xhr.setRequestHeader('Content-Type', 'multipart/form-data'); - _z.ajax.xhr(xhr,json,_z); - xhr.send(json.data); - - //接收 - 第三步 - json.loading && json.loading(); - json.timer = setTimeout(function() { - xhr.onreadystatechange = null; - _z.ajax.timeout(xhr,json,_z); - json.error && json.error('网络超时。'); - }, json.timeout); - xhr.onreadystatechange = function() { - if (xhr.readyState === 4 && xhr.status === 200) { - clearTimeout(json.timer); - if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) { - var res = ''; - if(xhr.responseText.length>0) res = JSON.parse(xhr.responseText); - _z.ajax.success(res,xhr,json,_z,); - json.success && json.success(res); - } else { - _z.ajax.error(xhr.status,xhr,json,_z); - json.error && json.error(xhr.status); - } - } - }; - //上传进度 - function progress(evt) { - var percent = 0; - //百分比 - percent = evt.lengthComputable ? Math.round(oEvent.loaded / oEvent.total * 100) : 0; - _z.ajax.progress(percent,evt,xhr,_z); - } - }, - //创建菜单 - createMenu:function(json){ - var _z = this; - var li = this.c('li'); - if(json.id)li.id = json.id; - if(json.css)li.className = json.css; - if(json.style)this.css += json.style; - //将菜单设置成文字或者图标 - if(json.menu || json.icon){ - var div = this.c('div'); - if(json.title)div.title = json.title; - div.className='iceEditor-exec'; - if(json.menu){ - div.innerHTML = json.menu; - }else{ - if(json.icon)div.innerHTML = ''; - } - if(json.data)div.setAttribute('data',json.data); - li.appendChild(div); - } - //使用下拉菜单 - if(json.dropdown){ - var div = this.c('div'); - div.className='iceEditor-menuDropdown'; - div.innerHTML = json.dropdown; - li.appendChild(div); - li.openMenu = 1; - li.onmouseover = function(){ - if(li.openMenu)div.className = 'iceEditor-menuDropdown iceEditor-menuActive'; - } - li.onmouseout = function(){ - div.className = 'iceEditor-menuDropdown'; - } - var exec = div.getElementsByClassName('iceEditor-exec'); - for(var i=0;i
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 文字大小
  • '}); - - //文字背景颜色 - var html=''; - this.createMenu({title:'文字背景颜色',name:'backColor',icon:'backColor',dropdown:html}); - - //文字颜色 - var html=''; - this.createMenu({title:'文字颜色',name:'foreColor',icon:'foreColor',dropdown:html}); - - //加粗 - this.createMenu({title:'加粗',name:'bold',data:'bold',icon:'bold'}); - //倾斜 - this.createMenu({title:'倾斜',name:'italic',data:'italic',icon:'italic'}); - //下划线 - this.createMenu({title:'下划线',name:'underline',data:'underline',icon:'underline'}); - //删除线 - this.createMenu({title:'删除线',name:'strikeThrough',data:'strikeThrough',icon:'strike'}); - //左对齐 - this.createMenu({title:'左对齐',name:'justifyLeft',data:'justifyLeft',icon:'alignleft'}); - //居中对齐 - this.createMenu({title:'居中对齐',name:'justifyCenter',data:'justifyCenter',icon:'aligncenter'}); - //右对齐 - this.createMenu({title:'右对齐',name:'justifyRight',data:'justifyRight',icon:'alignright'}); - //缩进 - this.createMenu({title:'缩进',name:'indent',data:'indent',icon:'indent'}); - //取消缩进 - this.createMenu({title:'取消缩进',name:'outdent',data:'outdent',icon:'outdent'}); - //有序列表 - this.createMenu({title:'有序列表',name:'insertOrderedList',data:'insertOrderedList',icon:'orderedlist'}); - //无序列表 - this.createMenu({title:'无序列表',name:'insertUnorderedList',data:'insertUnorderedList',icon:'unorderedlist'}); - //下标 - this.createMenu({title:'下标',name:'subscript',data:'subscript',icon:'subscript'}); - //上标 - this.createMenu({title:'上标',name:'superscript',data:'superscript',icon:'superscript'}); - //取消连接 - this.createMenu({title:'取消连接',name:'unlink',data:'unlink',icon:'unlink'}); - //添加水平线 - this.createMenu({title:'添加水平线',name:'hr',data:'insertHorizontalRule',icon:'min'}); - //清除格式 - this.createMenu({title:'清除格式',name:'removeFormat',data:'removeFormat',icon:'remove'}); - //全选 - this.createMenu({title:'全选',name:'selectAll',data:'selectAll',icon:'empty'}); - //查看源码 - this.createMenu({title:'查看源码',name:'code',icon:'code',data:'code'}); - //隔线 - this.createMenu({title:'隔线',name:'line',css:'line'}); - - //插入表情 - var html=''; - this.createMenu({title:'插入表情',name:'face',icon:'face',dropdown:html}); - - //表格 - this.createMenu({title:'表格',name:'table',icon:'table',dropdown:'', - success:function(e,z){ - //表格 - z.table = z.id(z.tableId); - var tableBox = z.table.getElementsByClassName('iceEditor-tableBox')[0]; - var tableBgOn = z.table.getElementsByClassName('iceEditor-tableBgOn')[0]; - var tableNum = z.table.getElementsByClassName('iceEditor-tableNum')[0]; - tableBox.onmouseover=function(ev){ - var o = z.getCoords(this),r=1,c=1; - this.onmousemove=function(ev){ - var Event = ev || event; - var x = Event.clientX - o.left - 5; - var y = Event.clientY - o.top - 5; - if(x<=180 && y<=180){ - r = Math.ceil(x/18); - c = Math.ceil(y/18); - tableBgOn.style.width = r*18 + 'px'; - tableBgOn.style.height = c*18 + 'px'; - tableNum.innerHTML='表格:'+r+"×"+c - } - } - this.onmousedown=function(){ - var tableNode=z.c('table'); - tableNode.width='100%'; - tableNode.border=1; - tableNode.style.border='1px solid #bdbdbd'; - tableNode.style.borderSpacing=0; - tableNode.style.borderCollapse='collapse'; - tableNode.className='table table-border'; - for(var x=0;x
    确定
    '}, - success:function(e,z){ - z.link = z.id(z.linkId); - z.linkInput = z.id(z.linkInputId); - z.link.getElementsByClassName('iceEditor-btn')[0].onclick = function(){ - //如果选中的内容存在a标签的话,删除 - var str = z.getSelectHTML().replace(/]+>/ig,'').replace(/<\s*\/a\s*>/ig,''); - var a = z.c('a'); - if(z.link.getElementsByTagName('input')[1].checked) a.target='_blank'; - a.href = z.linkInput.value; - a.innerHTML = str; - z.setHTML(a,true); - z.link.getElementsByClassName('iceEditor-popup')[0].style.display='none'; - z.pd(); - } - } - }); - //添加音乐 - this.createMenu({title:'添加音乐',name:'music',icon:'music',id:this.musicId,popup:{width:320,height:80,title:'添加音乐',content:'
    确定
    '}, - success:function(e,z){ - z.music = z.id(z.musicId); - z.musicInput = z.id(z.musicInputId); - z.music.getElementsByClassName('iceEditor-btn')[0].onclick = function(){ - var a = z.c('audio'); - a.src=z.musicInput.value; - a.controls='controls'; - z.setHTML(a,true); - z.music.getElementsByClassName('iceEditor-popup')[0].style.display='none'; - z.pd(); - } - } - }); - //附件上传 - this.createMenu({title:'附件上传',name:'files',icon:'files',id:this.filesId,popup:{width:320,height:200,title:'附件上传',content:'
    '}, - success:function(e,z){ - z.files = z.id(z.filesId); - var close = z.files.getElementsByClassName('iceEditor-popup')[0]; - z.id(z.filesUploadId).onchange=function(){ - if(!z.uploadUrl) return alert('请配置uploadUrl项'); - var formData = new FormData(); - for(var i=0;i
    确定
    '}, - success:function(e,z){ - z.insertImage = z.id(z.imageId); - var close = z.insertImage.getElementsByClassName('iceEditor-popup')[0]; - //输入连接插入图片 - var url = z.insertImage.getElementsByClassName('iceEditor-insertImageUrl')[0]; - var width = z.insertImage.getElementsByClassName('iceEditor-inputWidth')[0]; - var height = z.insertImage.getElementsByClassName('iceEditor-inputHeight')[0]; - var btn = z.insertImage.getElementsByClassName('iceEditor-btn')[0]; - //绑定输入连接 - btn.onclick=function(){ - var img = z.c('img'); - img.src = url.value; - if(width.value.trim())img.width = width.value.trim(); - if(height.value.trim())img.height = height.value.trim(); - z.setHTML(img); - close.style.display='none'; - z.pd(); - } - //上传图片 - z.id(z.imgUploadId).onchange=function(){ - if(!z.uploadUrl) return alert('请配置uploadUrl项'); - var formData = new FormData(); - for(var i=0;i
    URL:
    确定
    '}, - success:function(e,z){ - z.video = z.id(z.videoId); - var type; - var close = z.video.getElementsByClassName('iceEditor-popup')[0]; - var url = z.video.getElementsByClassName('iceEditor-videoUrl')[0]; - var width = z.video.getElementsByClassName('iceEditor-inputWidth')[0]; - var height = z.video.getElementsByClassName('iceEditor-inputHeight')[0]; - var btn = z.video.getElementsByClassName('iceEditor-btn')[0]; - btn.onclick=function(){ - if(!url.value.length) return alert('视频地址不能为空'); - var obj = z.video.getElementsByTagName('input'); - //获取单选按钮的值 - for(var i=0;i1){ - id = id[0].split('video/'); - if(id.length>1 && id[1].length){ - v.src='https://player.bilibili.com/player.html?bvid='+id[1]; - }else{ - return alert('b站'+error); - } - }else{ - return alert('b站'+error); - } - }else if(type === 3){ //优酷 - //源地址:https://v.youku.com/v_show/id_XMjM0ODA3NjIw.html - //处理地址:https://player.youku.com/embed/XMjM0ODA3NjIw - var id = url.value.split('.html'); - if(id.length>1){ - id = id[0].split('id_'); - if(id.length>1 && id[1].length){ - v.src='https://player.youku.com/embed/'+id[1]; - }else{ - return alert('优酷:'+error); - } - }else{ - return alert('优酷:'+error); - } - } - } - z.setHTML(v,true); - close.style.display='none'; - z.pd(); - } - } - }); - //窗口最大化 - this.createMenu({title:'最大化',name:'max',icon:'max',data:'max',css:'iceEditor-maxWindow'}); - //窗口最小化 - this.createMenu({title:'最小化',name:'min',icon:'min',data:'min',css:'iceEditor-minWindow'}); - //菜单栏禁止 - this.createMenu({name:'disabled',css:'iceEditor-disabledMask'}); -}; -//格式化菜单栏 -ice.editor.prototype.menuFormat=function() { - var _z=this; - this.menuHTML(); - var ul = this.c('ul'); - ul.className='iceEditor-menu'; - this.tool.innerHTML = ''; //防止重复创建 - this.tool.appendChild(ul); - //添加菜单 - for(var i=0;i/g,"\n"); - var text = _z.getHTML(); - //格式化段落 - text = text.replace(/<\/p>

    /gim,"<\/p>\n

    ").replace(/>

    \n\n<");
    -						_z.d.body.innerHTML=_z.unhtml(text);
    -						
    -					}else{
    -						_z.tool.className='iceEditor-tool iceEditor-noselect';
    -						d.style.display='none';
    -						this.className='iceEditor-exec';
    -						_z.d.body.className='';
    -						var text = _z.getHTML();
    -						_z.d.body.innerHTML=_z.html(text);
    -						var pre = _z.d.body.getElementsByTagName('pre');
    -						for(var s=0;s");
    -					}
    -					break;
    -					//最大化
    -					case 'max':
    -					var webHeight = window.innerHeight; //页面视口高度
    -					if (typeof webHeight != 'number') {
    -						if (document.compatMode == 'CSS1Compat') {
    -							webHeight = document.documentElement.clientHeight;
    -						} else {
    -							webWidth = document.body.clientWidth;
    -						}
    -					}
    -					_z.editor.style.position='fixed';
    -					_z.editor.style.zIndex=_z.getTime;
    -					_z.editor.style.width='100%';
    -					_z.editor.style.height='100%';
    -					_z.editor.style.top=0;
    -					_z.editor.style.left=0;
    -					_z.iframe.height=webHeight-35-20+'px';
    -					this.parentNode.style.display='none';
    -					_z.tool.getElementsByClassName('iceEditor-minWindow')[0].style.display='block';
    -					break;
    -					//最小化
    -					case 'min':
    -					_z.editor.removeAttribute('style');
    -					_z.iframe.height=_z.height;
    -					this.parentNode.style.display='none';
    -					_z.tool.getElementsByClassName('iceEditor-maxWindow')[0].style.display='block';
    -					break;
    -					//默认执行execCommand
    -					default:
    -					var b = this.attr.split('|');
    -					if (!_z.w.document._useStyleWithCSS) {
    -						_z.w.document.execCommand('styleWithCSS', null, true);
    -						_z.w.document._useStyleWithCSS = true;
    -					}
    -					if(b.length>1){
    -						_z.w.document.execCommand(b[0], false, b[1]);
    -					}else{
    -						_z.w.document.execCommand(b[0], false, null);
    -					}
    -					_z.range.getRangeAt(0).collapse();
    -				}
    -				return false;
    -			}
    -		}
    -	}
    -};
    -//纯文本粘贴
    -ice.editor.prototype.paste=function(){
    -	var _z=this;
    -	//上传
    -	var upload = function(imgBase64){
    -		//如果禁用上传到服务期,则直接以base64格式显示图像
    -		if(!_z.screenshotUpload){
    -			var p = _z.c('p');
    -			var a = _z.c('img');
    -			a.src = imgBase64;
    -			p.appendChild(a);
    -			_z.setHTML(p,true);
    -			return;
    -		}
    -		function dataURItoBlob(base64Data) {
    -			var byteString;
    -			if (base64Data.split(',')[0].indexOf('base64') >= 0){
    -				byteString = atob(base64Data.split(',')[1]);
    -			}else{
    -				byteString = unescape(base64Data.split(',')[1]);
    -			}
    -			var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
    -			var a = new Uint8Array(byteString.length);
    -			for (var i = 0; i < byteString.length; i++) {
    -				a[i] = byteString.charCodeAt(i);
    -			}
    -			return new Blob([a], {type:mimeString});
    -		}
    -		var blob = dataURItoBlob(imgBase64);
    -		var formData = new FormData();
    -		formData.append('file[]', blob);
    -		_z.ajax({
    -			url:_z.uploadUrl,
    -			data: formData,
    -			success: function (res) {
    -				if(res){
    -					for(var f=0;f'),true);
    -			return;
    -		}
    -
    -		if(t.length==1){
    -			_z.setText(text);
    -			return;
    -		}
    -		for(var i=0;i
    ':'
    '; - var range = _z.range.getRangeAt(0); - range.insertNode(range.createContextualFragment(br)); - //接下来这一步是为了修正光标位置 - var node = _z.range.anchorNode.nextSibling.nextSibling; - range.setStart(node,0); - range.setEnd(node,0); - range.collapse(); - }else if(_z.parentTagName == 'PRE' || _z.range.anchorNode.tagName == 'PRE'){ - _z.setText('
    ',true); - } - e.preventDefault(); - return; - } - } - // 去除Crtl+b/Ctrl+i/Ctrl+u等快捷键 - // e.metaKey for mac - if (e.ctrlKey || e.metaKey) { - switch(e.keyCode){ - case 13:{e.preventDefault();break;} - case 66: //ctrl+B or ctrl+b - case 98: - case 73: //ctrl+I or ctrl+i - case 105: - case 85: //ctrl+U or ctrl+u - case 117: {e.preventDefault();break;} - } - } - }); -}; -//配置格式化 -ice.editor.prototype.create=function() { - //添加样式 - if(this.cssConfig.styleSheet){ - this.cssConfig.styleSheet.cssText=this.css; - }else{ - this.cssConfig.innerHTML=this.css; - } - this.menuFormat(); - this.menuAction(); - this.disableds.style.display = this.disabled?'block':'none'; -}; -//获取编辑器的HTML内容 -ice.editor.prototype.getHTML=function() { - return this.content.innerHTML; -}; -//获取编辑器的Text内容 -ice.editor.prototype.getText=function() { - return this.content.innerText; -}; -//设置编辑器的内容 -ice.editor.prototype.setValue=function(v) { - this.content.innerHTML=v; -}; -//追加编辑器的内容 -ice.editor.prototype.addValue=function(v) { - this.content.innerHTML+=v; -}; -//编辑器图标 -ice.editor.css='.iceEditor{color:#353535!important;font-family:"Microsoft YaHei";font-size:14px!important;background:#fff;position:relative;border:solid 1px #ccc}.iceEditor *{margin:0;padding:0;box-sizing:border-box}.iceEditor a{color:#606060;text-decoration:none;-webkit-tap-highlight-color:transparent}.iceEditor a:hover{color:#000}.iceEditor-row{margin-bottom:10px;}.iceEditor-group{text-align:left;margin-bottom:10px;}.iceEditor-group label {min-width:50px!important;display:inline-block!important;text-align:right!important;font-weight:normal!important;}.iceEditor input{height:27px!important;line-height:27px!important;padding:3px!important;border:1px solid #B7B7B7!important;font-family:inherit;font-size:inherit;vertical-align:middle;outline:none;display:inline-block!important;}.iceEditor-exec{cursor:pointer}.iceEditor-icon{width:16px;height:16px;fill:currentColor;overflow:hidden;vertical-align:middle;font-size:16px}.iceEditor-noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.iceEditor-menuDropdown{min-width:35px;min-height:35px;transition:all .4s ease;margin-top:60px;opacity:0;visibility:hidden;position:absolute;background:#fff;z-index:999;box-shadow:0 2px 9px 0 rgba(0,0,0,.2);border-bottom:2px solid #676767;border-top:1px solid #676767}.iceEditor-menuDropdown::before{content:"";display:block;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #676767;position:absolute;top:-8px;left:9px}.iceEditor-menuTitle{width:100%!important;text-align:center;height:30px;line-height:30px;border-top:1px solid #efefef}.iceEditor-tool{width:100%;background:#eee;border-bottom:solid 1px #ccc;position:relative}.iceEditor-tool:after,.iceEditor-tool:before{display:table;content:" "}.iceEditor-tool:after{clear:both}.iceEditor-menu{width:100%;padding:0 10px;display:inline-block;float:left}.iceEditor-menu a{list-style:none;float:left;min-width:35px;height:35px;padding:0 5px;text-align:center;line-height:35px;cursor:pointer}.iceEditor-menu a:hover{background:#cdcdcd}.iceEditor-menu>li>div.iceEditor-exec{list-style:none;float:left;min-width:35px;height:35px;padding:0 5px;text-align:center;line-height:35px;cursor:pointer}.iceEditor-menu>li>div.iceEditor-exec:hover{background:#cdcdcd}.iceEditor-menu svg{fill:currentColor;overflow:hidden;vertical-align:middle;font-size:16px}.iceEditor-menu .iceEditor-active{background:#e0e0e0;position:relative;z-index:999}.iceEditor-menu .iceEditor-actives{background:#e0e0e0;}.iceEditor-menu .iceEditor-disabledMask{background:rgba(238,238,238,0.7);width:100%;height:100%;position:absolute;left:0;top:0;display:none}.iceEditor-menu li{display:inline-block;float:left;line-height:initial;}.iceEditor-menu li .iceEditor-menuDropdown.iceEditor-menuActive{margin-top:44px;opacity:1;visibility:visible}.iceEditor-menu li.iceEditor-minWindow{display:none}.iceEditor-menu li.iceEditor-maxWindow,.iceEditor-menu li.iceEditor-minWindow{float:right}.iceEditor-menu li.iceEditor-maxWindow>div,.iceEditor-menu li.iceEditor-minWindow>div{position:relative;z-index:9}.iceEditor-menu li.iceEditor-maxWindow .iceEditor-icon,.iceEditor-menu li.iceEditor-minWindow .iceEditor-icon{color:#606060}.iceEditor-codeLanguages select{padding:5px 5px;width:120px;outline:none;font-size:15px;margin-top:10px;}.iceEditor-line{height:35px;border-right:1px solid #ccc;width:1px;margin:0 10px;vertical-align:middle}.iceEditor input.iceEditor-uploadInput{display:none!important}.iceEditor-uploadBtn{float:none;width:auto;font-size:15px;background:#00b7ee;height:40px;line-height:40px;padding:0 30px;color:#fff;display:inline-block;margin:0 auto 15px auto;cursor:pointer;box-shadow:0 1px 1px rgba(0,0,0,.1)}.iceEditor-uploadBtn:hover{background:#009ccb}.iceEditor-uploadIcon{width:45px;height:45px;color:#bababa;margin:20px 20px 10px}.iceEditor-backColor{width:230px;padding:5px}.iceEditor-backColor span{width:20px;height:20px;padding:0;margin:1px;display:inline-block}.iceEditor-fontSize{width:280px}.iceEditor-fontSize li{width:40px;text-align:center}.iceEditor-fontSize span{width:40px;display:inline-block;padding:10px 0}.iceEditor-fontSize span:hover{background:#eee;color:#4CAF50}.iceEditor-createLink label{display:inline-block;}.iceEditor .iceEditor-link{width:175px!important;}.iceEditor-popup .iceEditor-insertImage{text-align:center}.iceEditor-popup .iceEditor-insertImageUrl{width:220px!important;height:27px;outline:0;margin-right:15px}.iceEditor-popup .iceEditor-inputWidth{width:50px!important;height:27px;outline:0;margin-right:15px}.iceEditor-popup .iceEditor-inputHeight{width:50px!important;height:27px;outline:0}.iceEditor-popup .iceEditor-btn{width:auto;display:inline-block;float:none;color:#fff!important;height:27px;line-height:25px;padding:0 10px;background:#939393;vertical-align:middle;margin-left:5px;border:1px solid #7b7b7b}.iceEditor-popup .iceEditor-btn:hover{background:#7b7b7b!important;color:#fff}.iceEditor-tableBox{position:relative;width:190px;height:214px;padding:5px;overflow:hidden}.iceEditor-tableBgOn{position:absolute!important;top:5px;left:5px;z-index:4;width:18px;height:18px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.iceEditor-tableBgOff{width:180px;height:180px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC) repeat}.iceEditor-tableNum{height:30px;line-height:30px;text-align:center;color:#757575}.iceEditor-video{text-align:left}.iceEditor-video label{margin-right:20px;display:inline-block}.iceEditor-video input{margin-right:5px}.iceEditor-video div{height:27px;margin-bottom:10px}.iceEditor-popup .iceEditor-videoUrl{width:255px!important;height:27px;outline:0;margin-right:0}.iceEditor-content{width:100%;height:100%;padding:20px;position:relative}.iceEditor-content:focus{outline:0}.iceEditor-dragBg{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1;display:none;}.iceEditor-drag{color:#757575;background:#eee;text-align:center;height:12px;line-height:0;cursor:n-resize}.iceEditor-disabled{position:absolute;width:100%;height:100%;top:0;left:0;background:rgba(191,191,191,.79);z-index:99999;display:none}.iceEditor-popup{display:none}.iceEditor-popupMain{width:400px;height:200px;position:fixed;margin:auto;top:0;bottom:0;left:0;right:0;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,.12);z-index:9999;animation-name:iceEditorPopup;animation-duration:.5s}.iceEditor-popupBox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.33);opacity:.5;filter:alpha(opacity=50);z-index:1}.iceEditor-popupTitle{width:100%;height:30px;line-height:30px;background:#2f2f2f;padding:0 10px;color:#fff}.iceEditor-popupTitle span{display:inline-block;vertical-align:middle}.iceEditor-popupTitle::before{content:"";display:inline-block;width:10px;height:10px;border-radius:10px;background:#c7f98c;vertical-align:middle;margin-right:8px}.iceEditor-popupClose{float:right;padding:0 10px;color:#fff;font-size:18px;cursor:pointer}.iceEditor-popupClose:hover{color:#8fe5ff}.iceEditor-popupContent{width:100%;padding:10px;color:#000;overflow:auto;float:left}.iceEditor-popupBtn{width:100%;border:0;color:#fff;background:#03A9F4;border-top:1px solid #efefef;padding:0 20px;margin:0;height:35px;text-align:center;line-height:35px;cursor:pointer;margin-top:20px;outline:0}.iceEditor-popupBtn:hover{color:#151515;background:#efefef}@keyframes iceEditorPopup{0%{top:-100px;opacity:0}to{top:0;opacity:1}}'; -//编辑器图标 -ice.editor.svg = ''; -(function svg(){var c=document.createElement('style'),d,s,b=document.body;c.type='text/css';if(c.styleSheet){c.styleSheet.cssText=ice.editor.css;}else{c.innerHTML=ice.editor.css;}document.getElementsByTagName('head')[0].appendChild(c);d=document.createElement("div");d.innerHTML=ice.editor.css+ice.editor.svg;ice.editor.svg=null;s=d.getElementsByTagName("svg")[0];if(s){s.setAttribute("aria-hidden","true");s.style.position="absolute";s.style.width=0;s.style.height=0;s.style.overflow="hidden";if(b.firstChild){b.firstChild.parentNode.insertBefore(s,b.firstChild)}else{b.appendChild(s)}}})(); \ No newline at end of file