1.1. 在线可视化HTML编辑器概述1.2. 获取xhEditor1.3. xhEditor运行环境1.4. xhEditor基本使用指南javascript
在Web程序应用中,最多见的一种行为是信息和言论的发布和交流。而在信息发布的同时,每每会有对信息发布的格式、类型和功能上的需求,好比:加粗、下划线等等,以使文字信息可以更形象更美观的传达给阅读者,同时也提升信息发布的工做效率。在这个需求的背景下,HTML在线编辑器就应运而生了。php
顾名思义,在线HTML编辑器就是在线编辑HTML代码的工具,它常常被应用于留言板留言、论坛发贴、Blog编写日志或等须要用户输入HTML的地方,是Web应用的经常使用模块之一。在线HTML编辑器能够实现对编辑内容添加各类丰富多彩的文字效果,以及提供各类方便快捷的操做功能,最大的提升编辑工做效率。在线HTML编辑器是任何网站不可或缺的重要功能组件,是互联网用户驾轻就熟的驰骋网络的有力工具。css
您能够访问xhEditor官方网站下载最新版本的xhEditor编辑器,xhEditor官方网站地址为:http://xheditor.com/,打开右上角的免费下载 | 代码向导连接,便可找到最新版本的下载地址。html
xhEditor无需任何安装,无需任何设置,直接解压缩并拷贝到你的网站相应文件夹下面便可直接调用。html5
xhEditor是基于浏览器的HTML、CSS和Javascript环境开发的,所以原则上市场上绝大部分浏览器咱们都能完美的运行,目前已测试的浏览器兼容列表以下:IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+ (+号表明日后全部新版本)。xhEditor是彻底基于浏览器环境的,所以不存在操做系统选择性,是彻底跨平台的。xhEditor同时也能够应用在任何的服务端语言环境下,例如:PHP、ASP、ASP.NET、JAVA等,能够在您的CMS、博客、论坛、商城等互联网平台上完美的嵌入运行,可以很是灵活简单的和您的系统实现完美的无缝衔接。java
您只需按照如下简单步骤便可学会使用xhEditor:jquery
<scripttype="text/javascript"src="/js/jquery-1.4.2.min.js"></script> <scripttype="text/javascript"src="/js/xheditor-zh-cn.min.js"></script>
注:jQuery和xhEditor的js文件路径请根据你网站具体路径状况相应修改 class="xheditor {skin:'default'}"
注:前面主参数也能够是xheditor-mfull、xheditor-mini或xheditor-simple,分别加载多行彻底、迷你和简单工具栏。后面大括号用来定义更多的初始化参数,能够省略。通过以上步骤,你就已经成功的将xhEditor编辑器安装在你的网页中。若须要学习更多xhEditor编辑器的使用技术,请参阅:xhEditor进阶使用。ajax
2.1. 进阶使用指导2.2. 初始化参数列表2.3. API函数接口列表2.4. 上传程序开发规范2.5. 插件开发指南2.6. 皮肤设计指南2.7. 关于二次开发数据库
阅读本章节请先阅读:xhEditor入门基础,若你已经熟悉xhEditor的基本使用,请往下继续。json
xhEditor提供两种方式初始化编辑器:
class="xheditor {skin:'default'}"
$('#elm1').xheditor(); 或者 $('#elm1').xheditor({tools:'mini'});
特别说明:两种初始化方法只能选择其中一种使用,若是两种方法的代码同时存在页面中,方法2的代码不会有任何效果。
咱们更倾向于推荐你们使用方法1,由于更简单易用,不涉及任何的Javascript代码。经过简单的参数设置便可定制各类效果的编辑器界面,简单易用且功能强大。
若是想实现更加复杂的交互应用,或者但愿xhEditor编辑器可以和本身的Javascript代码实现互相访问,那么你能够选择使用方法2,相对具备更大的自由空间。
xhEditor也提供了即时的卸载编辑器方法:
$('#elm1').xheditor(false);
初始化参数示例代码:
$('#elm1').xheditor({tools:'full',skin:'default',showBlocktag:true,internalScript:false,internalStyle:false,width:300,height:200,loadCSS:'http://xheditor.com/test.css',fullscreen:true,sourceMode:true,forcePtag:true,upImgUrl:"upload.php",upImgExt:"jpg,jpeg,gif,png"});
初始化参数列表:
参数值:full(彻底),mfull(多行彻底),simple(简单),mini(迷你) 或者自定义字符串,例如:'Cut,Copy,Paste,Pastetext,|,Source,Fullscreen,About' 完整按钮表: |:分隔符 /:强制换行 Cut:剪切 Copy:复制 Paste:粘贴 Pastetext:文本粘贴 Blocktag:段落标签 Fontface:字体 FontSize:字体大小 Bold:粗体 Italic:斜体 Underline:下划线 Strikethrough:中划线 FontColor:字体颜色 BackColor:字体背景色 SelectAll:全选 Removeformat:删除文字格式 Align:对齐 List:列表 Outdent:减小缩进 Indent:增长缩进 Link:超连接 Unlink:删除连接 Img:图片 Flash:Flash动画 Media:Windows media player视频 Emot:表情 Table:表格 Source:切换源代码模式 Preview:预览当前代码 Print:打印 Fullscreen:切换全屏模式 About:关于xhEditor
参数值:default(默认风格),o2007blue(Office2007蓝色),o2007silver(Office2007银色),vista(Vista),nostyle(NoStyle)
参数值:0(不显示阴影),大于0的数值(显示阴影并设置阴影的深度)
参数值:默认true(开启点击取消功能),false(关闭点击取消功能,必须要点击“取消”按钮才能关闭按钮面板)
参数值:true(显示段落标签),false(不显示)
参数值:true(保留样式连接link标签),false(清理样式连接link标签)
参数值:true(保留内部JS代码),false(清理内部JS代码)
参数值:true(保留内联JS代码),false(清理内联JS代码)
参数值:true(保留内部样式),false(清理内部样式)
参数值:true(保留内联样式),false(清理内联样式)
参数值:不带单位的数字,例:300
参数值:不带单位的数字,例:100
参数值:URL地址、URL数组以及直接内部样式,例如:'1.css'、['1.css','2.css']、'<style>body{font-size:20px;}</style>'<br />备注:1.0.0 RC3新添加加载内部样式功能
参数值:true(全屏大小),false(标准大小)
参数值:true(源代码模式),false(编辑模式)
参数值:true(强制使用P标签),false(不强制),默认true
参数值:true(强制转文本),false(不转文本),默认false 备注:v1.1.0新添加
参数值:true(禁用右键菜单),false(不由用),默认false 备注:v1.1.0新添加
参数值:编辑器所在的根路径,用在某些特殊状况下定位编辑器的根路径,默认为空,读取默认的编辑器根路径 备注:v1.1.0新添加
参数:快捷键对应事件代码的对象数组 示例:{'ctrl+enter':function(){$('#frmTest').submit();}} 备注:1.0.0 beta2新添加
参数:字符串的URL地址,用以解决先后台不在同一路径的资源定位问题 备注:1.1.0新添加
参数:abs(绝对路径),root(根路径),rel(相对路径) 备注:1.0.0 beta2新添加,v1.1.0版中名字由localUrl变动为urlType
参数:字符串的URL地址,默认为空,指向编辑器路径下的默认表情 备注:1.1.0新添加
参数:true(标注),false(不标注),默认为false 说明:若使用了ubb插件,请设置此属性为true 备注:1.0.0 beta2新添加
参数:可定义多个JSON对象数组,示例以下:{qq:{name:'QQ',count:55,width:25,height:25,line:11},msn:{name:'MSN',count:40,width:22,height:22,line:8}} name:表情分组名 count:表情数量 list:表情列表,例:{test1:'表情1',test2:'表情2'},键名表明文件名,扩展名必需为gif,键值表明alt信息 width:单个表情区域宽度,必需大于或等于表情最大宽度 height:单表情区域高度,必需大于或等于表情最大高度 line:单行显示表情数量 说明:count和list必需选其中一个值,注意count模式插入表情img的alt为空 备注:1.0.0 beta2新添加
参数:true(深刻清理),false(不深刻清理,保留style样式效果),默认为true 说明:若网站应用须要保留更多的Word样式效果,请设置此值为false,不过产生的HTML代码体积会大大增大 备注:1.0.0 beta2新添加
参数:数值(单位毫秒),默认为100,设置为-1关闭此功能 备注:1.0.0 rc2新添加
参数值:字符串(默认值:“点击打开连接”) 说明:只在不选择任何内容的状况下才会用到这个参数值
参数值:数值,默认为350 说明:弹出窗口的默认宽度
参数值:数值,默认为220 说明:弹出窗口的默认高度
参数值:true(显示),false(不显示) 说明:控制弹出窗口是否显示上方的标题栏,默认为显示,若须要显示一个更定制个性化的iframe窗口,可经过此参数隐藏上方的标题栏
参数值:任意字符串,默认值:“上传” 备注:1.0.0 beta2新添加
参数值:true(容许),false(不容许),默认为true容许 说明:本功能须要浏览器支持HTML5上传 备注:1.0.0Final新添加
参数值:大于0的数值,默认:99,设置为1关闭多文件上传 说明:本功能须要浏览器支持HTML5上传 备注:1.0.0 RC3新添加
参数值:接收用户上传的服务器端程序URL,默认留空为禁用超连接上传功能,具体使用方法请参考demo8演示文件 注:可以使用内置变量:{editorRoot},表明当前编辑器的根路径,例:{editorRoot}upload.php
参数值:超连接上传前限制的文件扩展名列表,默认为:zip,rar,txt,建议与服务端扩展名检查列表一致
参数值:接收用户上传的服务器端程序URL,默认留空为禁用上传功能,具体使用方法请参考demo8演示文件 注:可以使用内置变量:{editorRoot},表明当前编辑器的根路径,例:{editorRoot}upload.php
参数值:图片上传前限制的文件扩展名列表,默认为:jpg,jpeg,gif,png,建议与服务端扩展名检查列表一致
参数值:接收用户上传的服务器端程序URL,默认留空为禁用上传功能,具体使用方法请参考demo8演示文件 注:可以使用内置变量:{editorRoot},表明当前编辑器的根路径,例:{editorRoot}upload.php
参数值:动画上传前限制的文件扩展名列表,默认为:swf,建议与服务端扩展名检查列表一致
参数值:接收用户上传的服务器端程序URL,默认留空为禁用上传功能,具体使用方法请参考demo8演示文件 注:可以使用内置变量:{editorRoot},表明当前编辑器的根路径,例:{editorRoot}upload.php
参数值:视频上传前限制的文件扩展名列表,默认为:avi,建议与服务端扩展名检查列表一致
参数值:成功后须要执行的函数 说明:这个函数执行时返回的值为上传程序返回的msg变量,可能为字符串或者数组,若为字符串则直接表明url,如果数组,则必需包含一个url的变量,其它可由可开发者自定义 备注:1.0.0 beta2新添加
插件对象的属性解释: c:样式表名称 t:插件名字(鼠标在按钮上方时显示) s:快捷方式,例:"ctrl+enter" h:是否鼠标悬停直接执行,1:直接执行(省略当前值表明不直接执行) e:按钮点击后须要执行的代码(省略执行代码,则把当前的插件名做为参数,调用浏览器的execCommand函数) 特别说明: 若是您但愿样式表存储在系统自带的模板目录ui.css中,请将插件对象的样式名留空,则会自动按照插件名来调用相应的样式,例如:xhEdtBtnCut、xhEdtBtnCopy,其中的Cut和Copy是插件名 具体调用方法请参考演示文件夹中的demo9
API接口示例代码:
var editor=$('#elm1').xheditor({tools:'full',skin:'default'}); editor.focus(); editor.setSource('str') sHtml=editor.getSource() editor.appendHTML('<p>aaa</p>') editor.pasteHTML('<p>aaa</p>') editor.pasteText('str') sHtml=editor.formatXHTML('<b>aaa</b>') editor.toggleSource() editor.toggleFullscreen() alert(editor.settings.upImgExt); editor.settings.upImgExt='txt,doc';
API接口列表:
无参数
参数1:要设置的源代码内容,例:'<p>aaa</p>'
无参数
参数1:要粘贴的HTML代码,例:'<p>uuu</p>' 注:0.9.5版添加
参数1:返回格式,可选'text'返回文本格式,其它全部值都返回HTML格式
参数1:要粘贴的HTML代码,例:'<p>uuu</p>' 参数2:是否覆盖粘贴,留空(覆盖粘贴)、true(粘贴在光标选择区域以前)、false(粘贴在光标选择区域以后)
参数1:要粘贴的文本,例:'这里的内容彻底原样显示<strong>aaa</strong>' 参数2:是否覆盖粘贴,留空(覆盖粘贴)、true(粘贴在光标选择区域以前)、false(粘贴在光标选择区域以后)
参数1:须要格式化的HTML代码,例:'<b>aaa</b>',返回'<strong>aaa</strong>' 参数2:是否代码缩进换行,true(执行缩进格式化),false(不执行缩进格式化),默认为false
参数1:空(切换),true(显示源代码模式),false(显示编辑模式)
参数1:空(切换),true(显示全屏模式),false(显示标准模式)
参数1:空(切换),true(切换为显示块标签),false(切换为不显示块标签)
参数1:快捷键值,例:'ctrl+enter' 参数2:用户按下快捷键后须要响应的程序代码,例:function(){$('#frmTest').submit();} 说明:容许为某个相同快捷键值重复添加多个响应代码 备注:1.0.0 beta2新添加
参数1:快捷键值,例:'ctrl+enter' 备注:1.0.0Final新添加
参数1:工具按钮名称(不区分大小写),例:Link、img 说明:此函数能够在插件内部或者外部Javascript代码中进行调用
参数1:模式窗口的标题title 参数2:模式窗口的内容content 参数3:模式窗口的宽度w 参数4:模式窗口的高度h 参数5:模式窗口关闭时的回调函数onRemove
参数1:模式窗口的标题 参数2:iframe的地址ifmurl,可以使用内置变量:{editorRoot},表明当前编辑器的根路径,例:{editorRoot}xheditor_plugins/test.html 参数3:提供给目标iframe页面回调用的回调函数,能够在iframe页面中以这样的形式调用:callback('1.gif'); 参数4:模式窗口的宽度w 参数5:模式窗口的高度h 参数6:模式窗口关闭时的回调函数onRemove
internalScript:是否清除内部代码 inlineScript:是否清除内联代码 internalStyle:是否清除内部样式 inlineStyle:是否清除内联样式 forcePtag:强制使用P标签 upLinkUrl:超连接上传接口地址 upLinkExt:超连接本地上传扩展限制 upImgUrl:图片上传接口地址 upImgExt:图片本地上传扩展限制 upFlashUrl:动画上传接口地址 upFlashExt:动画本地上传扩展限制 upMediaUrl:视频上传接口地址 upMediaExt:视频本地上传扩展限制 beforeSetSource:在设置源代码到编辑器前调用此函数 beforeGetSource:从编辑器返回源代码前调用此函数 focus:编辑器得到焦点时回调此函数 blur:编辑器失去焦点时回调此函数 注:修改有效变量仅限以上,其它的变量都仅在编辑器初始化时使用
需了解更多细节,请参考发行包中的demos文件夹。其中upload.php、upload.asp、upload.aspx仅为演示参考代码,若您使用的是其它的服务器脚本语言,请自行对初始化参数中的upLinkUrl、upImgUrl、upFlashUrl和upMediaUrl进行修改,并开发相应服务器上传接收程序。若您但愿在本身的项目中实际使用,请自行修改代码或者从新开发,开发过程当中请注意上传文件的格式及大小限制,注意服务器脚本安全问题。
标准插件开发流程:
下面咱们就demo09中的一个最简单插件做介绍:
<styletype="text/css"> .testClassName { background:transparent url(img/plugin.gif)no-repeat 20px20px; background-position:3px3px; } </style>
test7:{c:'testClassName',t:'测试7:showIframeModal (Ctrl+7)',s:'ctrl+7',e:function(){ var _this=this; _this.showIframeModal('测试showIframeModal接口','uploadgui.html',function(v){_this.loadBookmark();_this.pasteText('返回值:\r\n'+v);},500,300); }}
这个插件实现的功能是打开一个iframe,并将iframe返回的参数字符串插入到当前编辑器光标处。
特别说明:
若但愿xhEditor开发团队为您定制特殊的功能、皮肤和插件,请参阅咱们提供的商业服务页面。
xhEditor的皮肤保存在xheditor_skin文件夹中,每一个皮肤一个子文件夹,文件夹结构以下:
xheditor_skin
└─default ├─ui.css ├─iframe.css └─img ├─icons.gif ├─... └─loading.gif
xheLayout:编辑器table样式;xheTool:工具按钮所在区域的样式;xheButton:按钮样式;xhePanel:操做面板的样式;xheMenu:菜单样式;xheEmot:表情样式;xheColor:颜色选择器的样式;xheDialog:面板上的对话框样式;xheModal:模式窗口样式;
xhEditor皮肤结构相对很是简单,有必定的HTML和CSS设计基础便可完成设计工做。
若但愿xhEditor开发团队为您定制特殊的功能、皮肤和插件,请参阅咱们提供的商业服务页面。
因为二次开发相对复杂度较高,须要对xhEditor源代码结构熟悉,而开发者的水平有高有低,所以容易出现的问题也五花八门。鉴于这个缘由,xhEditor开发团队对非商业受权用户不提供任何的技术文档和技术支持,但愿你们理解。
若但愿xhEditor开发团队为您定制特殊的功能、皮肤和插件,请参阅咱们提供的商业服务页面。
3.1. 使用常见问题
xhEditor最初的版本是基于jQuery 1.3.2开发的,所以目前v1.0系列的全部版本都能最大的兼容1.3.2。为了得到更好的代码性能,目前xhEditor官方更建议使用最新的1.4.2版本。
虽说v1.0版本系列能最大的兼容jQuery 1.3.2,可是在实际测试过程当中,也发现一个不可修正的问题:在IE6下没法使用缩略图上传模式。若是你不须要使用缩略图模式,能够在jQuery 1.3.2基础上完美的运行xhEditor v1.0版本系列。
若是使用最新版xhEditor的mini压缩版本,由于里面的文字彻底utf-8编码化,能够直接调用,不会出现乱码现象。
若是使用的是源代码js文件或早期的xhEditor版本,在非utf-8编码的网页中使用就会出现乱码现象,只需将script的charset属性设置成utf-8便可完美解决:
<scripttype="text/javascript"charset="utf-8"src="xheditor-zh-cn.js"></script>
目前网络中全部的在线编辑器都是利用新建立的iframe来实现可视化编辑功能,xhEditor也不例外,因此在提交前必须要将最新的编辑结果从新同步到原来的textarea。
xhEditor默认会在textarea所在的form对象中绑定onsubmit事件,当用户点击submit按钮时,xhEditor就会将最新结果同步回textarea,随后随表单中的其它表单项一同提交到服务端脚本。所以,若是不须要用Javascript额外处理,普通的表单式提交是没任何问题的。
若是网页中须要用Javascript额外处理编辑结果,好比ajax提交表单,则有三种解决方案:
能够在初始化参数中使用emots参数来自