ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:120KB ,
资源ID:9010791      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9010791.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(百度编辑器UEditor的插件开发.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

百度编辑器UEditor的插件开发.doc

1、百度编辑器UEditor的插件开发 1.概述 UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量、可定制、注重用户体验等特点,开源基于BSD协议,允许自由使用和修改代码。 2.下载UEditor 截至2013.11.27,最新版本为1.3.5,下面是具体的相关文档的下载地址: 百度官网下载地址: 官方文档资料地址: 官方API地址: 3.源码包文件说明 从官网上下载完整源码包,解压到任意目录,解压后的源码目录结构如下所示: •_examples:编辑器的示例页面 •dialogs:弹出对话框对应的资源和JS文件 •themes:样式图片和

2、样式文件 •editor.config.js:编辑器的配置文件 •editor.api.js:开发版的所有js文件导入 •editor.all.js:使用版的所有js文件 •lang:语言文件 •jsp、net、php:涉及到服务器端操作的文件 •third-party:第三方插件 4.部署和使用 UEditor可供普通用户使用,同时UEditor的插件机制也为二次开发者提供了自定义插件的开发。 1)在项目的任一文件夹中建立一个用于存放UEditor相关资源和文件的目录。 2)创建简单的编辑器实例,首先在html页面中准备一个dom容器,容器可以是

3、editor">或

,也可以是标签。 3)引入相关文件 1 2 3 4 5

4、cript"src="editor.api.js"> 4)创建编辑器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 //通过new操作符实例化编辑器对象 varmyEditor=newbaidu.editor.ui.Editor(); myEditor.render('editor');//渲染dom容器

5、 //使用UE.getEditor()实例化编辑器对象 varmyEditor=UE.getEditor('myEditor'); //通过new操作符实例化编辑器对象并自定义配置项 varmyEditor=newbaidu.editor.ui.Editor({ toolbars:[//自定义工具栏 ['FullScreen','Source','Undo','Redo'] ], wordCount:false,//关闭字数统计 elementPathEnabled:false,//关闭elementPath initialFrameHeight:300//默认的编辑区域

6、高度 }); myEditor.render('editor'); //通过UE.getEditor()实例化编辑器对象并自定义配置项 UE.getEditor('myEditor',{ toolbars:[//自定义工具栏 ['FullScreen','Source','Undo','Redo'] ], wordCount:false,//关闭字数统计 elementPathEnabled:false,//关闭elementPath initialFrameHeight:300//默认的编辑区域高度 }) 说明:使用编辑器初始化的内容; 但是如果使用div作为渲染容器,就不可以在标签里设置初始值,但可通过在创建编辑器的时候配置initialContent参数来设置初始值。 5.自定义插件的开发 5.1UEditor的整体架构 UEditor的架构设计采用了传统的分层架构模式,从低到高依次分为核心层、命令插件层和UI

8、层这样三个低耦合的层次。 1)核心层提供了编辑器底层的一些方法和概念,如DOM树操作、Selection、Range等; 2)在核心层之上覆盖的是命令插件层; 3)在命令插件层之上则是UI层。 5.2UEditor的插件机制 从根本上来说,除了核心提供的几个编辑器底层封装类之外,UEditor的全部功能都是通过外挂插件或者是命令(实质上也可以看成特殊的插件)来实现的。UEditor中插件的实质是在编辑器实例下面绑定的一个以插件名字命名的函数,然后通过编辑器实例化过程去执行这个函数,并将实例对象传递到插件内部作为其this对象来完成所有的功能操作。 5.3自定义插件的开发 1)在e

9、ditor.config.js配置文件中的toolbars项添加插件名,如分页插件:zpagebreak,toolbars:[[..,'zpagebreak']]; 2)在editor.config.js配置文件中的labelMap项添加鼠标移入插件提示文字:labelMap:{..,'zpagebreak':'分页'}; 3)在_src/ui/editorui.js文件中的命令按钮项btnCmds添加插件名:btnCmds=[..,'zpagebreak'];; 4)插件内部结构 1 2 3 4 5 6 7 8 9 10 11 12 13 UE.plugin

10、s[]=function(){ varme=this; //注册鼠标和键盘事件 me.addListener('mousedown',_mouseDownEvent); me.addListener('keydown',function(type,evt){...}); me.addListener('mouseup',function(){}); //查询当前命令状态 queryCommandState:function(cmdName){} //命令执行主体 exeCommand:function(cmdName,myobject){} //获取命令执行结果 quer

11、yCommandValue:function(cmdName){} }; 5)插件具体写法 //editor.selection.getRange()获取选取 //editor类,此类用于初始化的一些设置,比如获取内容,设置高宽,设置编辑器内容等等。 //domUtils类,Dom操作工具包。 //utils类,静态工具函数包 //browser类,此类用于检测浏览器。 //EventBase类,此类用基础事件的注册类,比如鼠标,键盘事件等。 //ajax类,此类用于ajax工具类。 示例1:命令式插件1(分页) 1 2 3 4 5 6 7 8 UE.pl

12、ugins['zpagebreak']=function(){ varme=this; mands['zpagebreak']={ execCommand:function(cmdName,myobject){ //命令执行主体略 } }; }; 分页命令插件的执行主体用到的方法大体如下: 1)获取选区 1 varrange=me.selection.getRange(); 2)往选区插入分页标识: 1 2 3 4 5 varpageBreakMark=this.document.createElement('span'); UE.dom.domUti

13、ls.setAttributes(pageBreakMark,{ 'style':'page-break-after:always;' }); range.insertNode(pageBreakMark); 3)根据分页标识分割内容 1 2 3 4 5 6 7 8 9 10 varcontent=me.getContent(), pageBreakPos=content.indexOf('page-break-after:always'), prevContent=content.substring(0,pageBreakPos-13), nextCont

14、ent=content.substring(pageBreakPos+27); me.setContent(prevContent);//给当前编辑器对象设置新内容 //给新编辑器设置内容,需监听新编辑器的ready事件,否则会报错 //varneweditor=....;获取新编辑器实例方法此处略 neweditor.addListener('ready',function(type,evt){ this.setContent(nextContent); }); 4)销毁编辑器 1 currentEditor.destroy(); 5)给插件按钮设置样式(每个工具栏按钮都

15、会有一个’edui-for-‘加插件名的样式类名,如分页命名插件的样式类名:edui-for-zpagebreak)。 1 addStyle('.edui-default.edui-toolbardiv.edui-for-zpagebreak.edui-icon'+'{background:url("图片路径")centerno-repeat;}'); 示例2:命令式插件2(插入批注) 1 2 3 4 5 6 7 8 UE.plugins['zcomment']=function(){ varme=this; mands['zcomment']={ execCom

16、mand:function(cmdName,myobject){ //命令执行主体略 } }; }; 插入批注命令插件用到的方法大体如下: 1)创建要插入的字符串 1 2 3 varcreatInsertStr=function(uName,time,toCode){ return!toCode?''+'请在此输

17、入批注-'+uName+time+'×'+'':'请在此输入批注-'+uName+time+'×'; } 2)代码视图和设计视图切换时进行相应元素节点的替换 1 2 3 4 5 6 7 8 varswitchImgAndCode=function(root,img2C

18、ode){ UE.utils.each(root.getNodesByTagName(img2Code?'span':'cke_comment'),function(node){ if(node.getAttr('edui-comment')){ varhtml=creatInsertStr(node.getAttr('_uname'),node.getAttr('_time'),img2Code); node.parentNode.replaceChild(UE.uNode.createElement(html),node); } }) } 3)设计视图转为源码视图的规则

19、1 2 3 me.addOutputRule(function(root){ switchImgAndCode(root,true); }); //源码视图转为设计视图的规则 1 2 3 me.addInputRule(function(root){ switchImgAndCode(root); }); 4)给插件对象添加样式规则 1 2 3 4 me.ready(function(){ UE.utils.cssRule('zcomment','.z-edui-comment{background:url(\''+me.options.UEDITOR_H

20、OME_URL +'themes/default/images/icon_comment.gif\')no-repeat0center#ff0;border:1pxdotted#fc3;display:inline-block;padding-left:18px;color:#cb9;font-weight:normal;}'+'.z-edui-commentspan{color:#320;}'+'.z-edui-commenti{cursor:pointer;display:inline-block;font-size:16px;line-height:12px;font-weight:b

21、old;color:#C00;padding:2px2px0;}',me.document); }); 5)给插件按钮设置样式 1 addStyle('.edui-default.edui-toolbardiv.edui-for-zcomment.edui-icon'+'{background:url("图片路径")centerno-repeat;}'); 示例3:弹出框式插件(插入图片) 1 2 3 4 5 6 UE.plugins['zimage']=function(){ varme=this; mands['zimage']={ execCommand:f

22、unction(cmdName,myobject){} }; }; 弹出框式插件的执行主体用到的方法大体如下: 1)实例化弹出框对象dialog,以及相关配置 注:其中dialog宽高配置项由于开发包并未提供,所以需要用户自行扩展,更改源文件_src/ui/dialog.js,此处省略。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

23、 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 varurl="...."//弹出框文件路径 vardialog=newUE.ui.Dialog({ editor:me, iframeUrl:url, width:800, height:450, title:"插入图片", buttons:[ { className:'edui-okbutton', label:me.getLang("ok"), onclick:function(){ dialog.on

24、ok(true); } }, { className:'edui-cancelbutton', label:me.getLang("cancel"), onclick:function(){ dialog.close(false); } } ] }); dialog.open(); dialog.onok=function(){ vardgSelf=this, currentEditor=this.editor, dialogWin=document.getElementById(this.id+'_iframe').contentWindow, source

25、dialogWin.$NV("Source"), title="", imageLink="", rela=""; if(source=='upload'){//本地上传图片 dialogWin.uploadSave(function(response){ vardt=response.DT; if(dt&&dt.Rows){ varrs=dt.Rows; for(vari=0;i

26、"ResourcePath"); imageLink=imageLink.replace(/\/+/g,"/"); rela=dr.get("ResourceID"); varsourceImageLink=dr.get("PreviewPrefix")+dr.get("Path").replace(/\/+/g,"/"); currentEditor.execCommand("insertHTML",template.tmpl({ ImageLink:imageLink, SourceImageLink:sourceImageLink, Title:title, Alt:t

27、itle, Rela:rela })); } } dialogWin.$S("URL","http://"); dialogWin.location.reload(); dlgself.close(false);//图片上传并插入后,关闭弹出框 }); } }; 2)给插件按钮设置样式 1 addStyle('.edui-default.edui-toolbardiv.edui-for-zimage.edui-icon'+'{background:url("图片路径")centerno-repeat;}'); 6.其他常用方法 6.1获取工具栏对象 1 var

28、editor_toolbarbox=me.ui.getDom("toolbarbox"); 6.2销毁编辑器 1 2 3 myEditor.destroy();//直接使用destroy()方法 UE.delEditor("容器id");//使用delEditor()方法 UE.getEditor("容器id").destroy();使用getEditor()和destroy()方法 6.3删除所有编辑器实例 1 2 3 4 5 6 7 UE.utils.each(UE.instants,function(editor,index,instants){ If(

29、editor.hasOwnProperty('key')){ editor.destroy(); //或者使用instants[index].destroy(); } }); UE.instants={}; 6.4监听编辑器实例myEditor的focus事件 1 2 3 4 5 6 7 8 9 //监听当前编辑器的window对象 UE.dom.domUtils.on(myEditor.window,'focus',function(){ //.... }); //直接监听当前编辑器 myEditor.addListener("focus",function(){ //... }); 6.5让编辑器选区中的节点被选中 1 2 3 varrange=this.selection.getRange();//获取选区 var$el=$("span.z-edui-comment>span",me.document);//获取元素节点 range.selectNodeContents($el.get(0)).select();//选中元素 注:文章源于泽元软件知识库,此文章只用于学术交流,不用于商业应用。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服