当前位置:文档之家› c 简易文本编辑器 t t

c 简易文本编辑器 t t

c 简易文本编辑器 t t
c 简易文本编辑器 t t

课题46:简易文本编辑器(2人)。要求:

1) 具有图形菜单界面;

2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除;

3) 可正确存盘、取盘;

4) 正确显示总行数。

#include

#include

#include

#include

#define MAX 10000

#define _CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告

void menu();

void shuru(char text[]);

void bc(char text[]);

void dakai(char text[]);

void dayin(char text[]);

void chazhao(char text[],int l);

void tihan(char text[],int l);

int strindex(char text[],char t[],int i2,int l);

void shanchu(char p[],int l);

void cs(char text[]);

void charu(char text[],int l);

void tuichu(int status);

char text[MAX]=""; //文本编辑域

char name[20]=""; //文件保存的位置

int status=0; //显示是否保存过的状态

int ntext; //文本编辑的位置

void dakai(char text[])

{

system("cls");

FILE *fp;

char pd,ch;

char name[30];

int i=0;

printf("输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单");

fflush(stdin);

pd=getchar();

if (pd=='A'||pd=='a')

{

printf("请输入要打开文件名字(例如c:\\a.txt)");

scanf("%s",name);

while ((fp=fopen(name,"r"))==NULL)

{

printf("\n打开文件失败,请重新输入要打开的文件名:");

scanf("%s",name);

}

cs(text);

while(!feof(fp))

{

ch=fgetc(fp);

text[i]=ch;

i ;

}

text[i]='\0';

ntext=i;

fclose(fp);

printf("\n文件读取成功\n文件内容为\n");

dayin(text);

}

if (pd=='M'||pd=='m')

menu();

}

void bc(char text[])

{

system("cls");

FILE *fp;

char pd;

char tmp;

int i;

printf("\n输入【A】保存;任意键返回主菜单不保存\n");

fflush(stdin);

pd=getchar();

if (!(pd=='A'||pd=='a'))

{

menu();

}

else

{

if(name[20]==NULL)

{

printf("\n请输入保存文件名(例如: c:\\a.txt):");

scanf("%s",name);

}

while ((fp=fopen(name,"w "))==NULL)

{

printf("文件不存在,请重新输入文件名:");

scanf("%s",name);

}

printf("\nA:确定;B:取消:");

while(scanf("%c",&tmp)!=EOF)

{

if (tmp=='A' || tmp=='a')

{

for(i=0;i

fprintf(fp,"%c",text[i]);

fclose(fp);

status=1;

printf("\n文件保存成功\n");

break;

}

if (tmp=='B' || tmp=='b')

{

break;

}

}

}

}

void cs(char text[])

{

int i;

for (i=0;i

{

text[i]='\0';

}

ntext=0;

status=0;

}

int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配)

{

int i1=l,j=0;

while (i1

{

if (text[i1]==t[j]) //继续匹配下一个字符

{

j ;

i1 ;

//主串和子串依次匹配下一个字符

}

else //主串、子串指针回溯重新开始下一次匹配

{

i1=i1-j 1; //主串从下一个位置开始匹配

j=0;

//子串从头开始匹配

}

}

if (j>=i2)

{

return(i1-i2);

} //返回匹配的第一个字符的下标

else

return(-1); //模式匹配不成功

}

void menu()

{

system("cls");

time_t timep;

time (&timep);

printf("%s",ctime(&timep));

printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom to use our TXT edition system!\n");

printf("\n\n\t\t\t 欢迎您使用文本编辑器软件!\n");

printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n");

getchar();

loop:

system("cls");

printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");

printf("\t\t\t\t----0.清空内容--\n");

printf("\t\t\t\t----1.打开文件--\n");

if (ntext==0){

printf("\t\t\t\t----2.输入内容--\n");

}

else {

printf("\t\t\t\t----2.继续输入--\n");

}

printf("\t\t\t\t----3.查找------\n");

printf("\t\t\t\t----4.插入------\n");

printf("\t\t\t\t----5.删除------\n");

printf("\t\t\t\t----6.替换------\n");

printf("\t\t\t\t----7.显示内容--\n");

printf("\t\t\t\t----8.保存------\n");

printf("\t\t\t\t----9.退出------\n");

printf("\n\t\t*********************选项

************************\n");

printf("\n\t\t\t\t输入选项0-9:");

char n;

fflush(stdin);

n=getchar();

if(n>='0'&&n<='9')

{

switch (n)

{

case '0': cs(text);break;

case '1': dakai(text);break;

case '2': shuru(text);break;

case '3': chazhao(text,0);break;

case '4': charu(text,1);break;

case '5': shanchu(text,0);break;

case '6': tihan(text,0);break;

case '7': dayin(text);break;

case '8': bc(text);break;

case '9': tuichu(status);

default : break;

}

}

else

{

printf("\n输入有误,请重新输入:");

fflush(stdin);

n=getchar();

}

system("pause");

goto loop;

}

void chazhao(char text[],int l)

{

system("cls");

int i,t,a=-1;

char pattern[20],bd,pd;

printf("原文为:\n");

dayin(text);

printf("请输入您要查找的内容");

scanf("%s",pattern);

printf("您查找的内容是:%s\n",pattern);

t=strlen(pattern);

loop:

a=strindex(text,pattern,t,l);

if (a!=-1)

{

l=a t;

}

int hs=1,ls=0;

for (i=0;i<=a;i )

{

ls ;

if (text[i]=='\n')

{

hs ;ls=0;

}

}

if (a==-1)

{

printf("查找到结尾没有找到\n输入R将重头查找;任意键返回主菜单");

l=0;

fflush(stdin);

pd=getchar();

}

else

{

printf("已经找到在第%d行第%d列,输入R继续查找下一处;任意键返回主菜单",hs,ls);

fflush(stdin);

bd=getchar();

if (bd=='R'||bd=='r')

goto loop;

}

if (pd=='R'||pd=='r')

{l=0;chazhao(text,l);}

}

void dayin(char text[])

{

system("cls");

printf("现在文本的内容为:\n");

printf("%s\n",text);

int hs=1,i;

for (i=0;i

{

if (text[i]=='\n')

{

hs ;

}

}

printf("\n文本共有%d行\n",hs);

}

void shuru(char text[])

{

system("cls");

printf("请输入内容(输入@结束输入并返回主菜单):\n");

printf("%s",text);

char c;

int i=ntext,j=ntext;

fflush(stdin);

while ((c=getchar())!='@')

{

text[i]=c;

i ;

ntext=i;

continue;

}

int cout=0,zf=0,h=1,hs=1,zfs=0;

for(;cout

{

zf ;

if(text[cout]=='\n')

{h ;zf--;}

if(text[cout]==' ')

zf--;

}

for(cout=j;cout

{

zfs ;

if(text[cout]=='\n')

{hs ;zfs--;}

if(text[cout]==' ')

zfs--;

}

printf("统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行\n",zf,h,zfs,hs);

}

void shanchu(char p[],int l)

{

int i,a=-1,t2=0;

char x[20],px,pd,pdx,c;

system("cls");

printf("%s",p);

printf("\n输入【A】执行查找删除内容;任意键返回主菜单:");

fflush(stdin);

px=getchar();

if (px=='a'||px=='A')

{

printf("\n输入您要删除的内容,以@结束:");

fflush(stdin);

while ((c=getchar())!='@')

{

if (c=='@')

{

break;

}

else

{

x[t2]=c;

t2 ;

continue;

}

}

loop:

a=strindex(p,x,t2,l);

int hs=1,ls=0;

for (i=0;i<=a;i )

{

ls ;

if (p[i]=='\n')

{

hs ; ls=0;

}

}

if (a==-1)

{

printf("已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:");

l=0;

fflush(stdin);

pdx=getchar();

}

else

{

printf("你要删除的内容在第%d行第%d列\n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:",hs,ls);

fflush(stdin);

pd=getchar();

l=t2 a;

if (pd=='a'||pd=='A')

{

for(i=a;i

{

p[i]=p[i t2];

}

ntext=ntext-t2;

printf("删除成功,删除后的内容为:\n%s\n",text);

}

else if (pd=='b'||pd=='B')

goto loop;

}

if(pdx=='r'||pdx=='R')

shanchu(text,l);

}

}

void charu(char text[],int l) //向文本中插入内容

{

system("cls");

int i=0,t=0,t2=0,a=-1,b;

char cr[20]="",pd,x[500],c,d;

printf("\n当前文本信息为:\n");

printf("%s",text);

printf("\n输入您要在哪个内容前插入,以@结束:");

fflush(stdin);

while ((c=getchar())!='@') //用一个数组接收要插入在哪个内容之前

{

if (c=='@')

{

break;

}

else

{

cr[t]=c;

t ;

continue;

}

}

loop:

a=strindex(text,cr,t,l); //查找并返回要插入的位置点

int hs=1,ls=0;

for (b=0;b

{

ls ;

if (text[b]=='\n')

{

hs ;

ls=0;

}

}

if (a==-1)

{

printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:\n");

l=0;

fflush(stdin);

d=getchar();

fflush(stdin);

}

else

{

printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:",hs,ls 1);

fflush(stdin);

pd=getchar();

if (pd=='a'||pd=='A')

{

l=a t;

goto loop;

}

else if (pd=='b'||pd=='B')

{

printf("\n\n输入您要插入的内容,以@结束:");

fflush(stdin);

while ((c=getchar())!='@')

{

if (c=='@')

{

break;

}

else

{

x[t2]=c;

t2 ;

continue;

}

}

for (i=ntext;i>=a;i--)

{

text[i t2]=text[i];

}

for (i=0;i

{

text[i a]=x[i];

}

ntext=ntext t2;

printf("\n当前文本信息为:\n");

for (i=0;i<=ntext-1;i )

printf("%c",text[i]);

printf("\n文本插入成功\n");

fflush(stdin);

getchar();

}

}

if (d=='r'||d=='R')

{

l=0;

charu(text,l);

}

status=0;

}

void tihan(char p[],int l) //内容替换

{

int t=0,t1=0,i,a,b;

char c,th[20],d,d1,bth[20];

int i2;

system("cls");

printf("\n当前文本信息为:\n");

for (i2=0;i2<=ntext-1;i2 )

printf("%c",p[i2]);

printf("\n输入要被替换的内容,以@结束:");

fflush(stdin);

while ((c=getchar())!='@') //t指替换前内容的长度{

if (c=='@')

{

break;

}

else

{

bth[t]=c;

t ;

continue;

}

}

loop:

a=strindex(p,bth,t,l); //查找要被替换的内容的位置

int hs=1,ls=0;

for (b=0;b

{

ls ;

if (p[b]=='\n')

{

hs ;

ls=0;

}

}

if (a==-1)

{

printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");

l=0;

d=getchar();

fflush(stdin);

}

else

{

printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:",hs,ls 1);

fflush(stdin);

l=t a;

char pd;

pd=getchar();

if (pd!='a'&&pd!='A')

{

printf("\n是否要替换该内容?\nA:替换给内容;其他键返回主菜单\n请选择:");

fflush(stdin);

d1=getchar();

if (d1=='a'||d1=='A')

{

printf("\n输入要替换的内容,以@结束:");

fflush(stdin);

while ((c=getchar())!='@') //t1指替换后的内容长度

{

if (c=='@')

{

break;

}

else

{

th[t1]=c;

t1 ;

continue;

}

}

if (t==t1) //将要被替换的内容和替换后的内容进行长度比较

{

for (i=0;i

p[i a]=th[i];

}

else

{

if (t>t1)

{

for (i=0;i

{

p[i a]=th[i];

}

for (i=a t1;i

{

p[i]=p[i t-t1];

}

ntext=ntext t1-t;

}

else

{

for (i=ntext;i>=a;i--)

{

p[i t1-t]=p[i];

}

for (i=0;i

{

p[i a]=th[i];

}

ntext=ntext t1-t;

}

}

printf("替换成功");

printf("\n当前文本信息为:\n");

for (i2=0;i2<=ntext-1;i2 )

printf("%c",p[i2]);

getchar();

status=0;

}

}

else

goto loop;

}

if(d=='r'||d=='R')

tihan(text,l);

}

void tuichu(int status)

{

char pd;

if(status)

exit(0);

else

printf("还未保存文件,确定退出?(Q.直接退出;Y.保存后退出");

fflush(stdin);

pd=getchar();

if(!(pd=='Q'||pd=='q'))

bc(text);

exit(0);

}

int main()

{

menu();

return (0);

}

文本编辑器c++实验报告附源代码

四川大学软件学院 实验报告 课程名称数据结构实验课时8 实验项目文本编辑器实验时间12到14周实验目的了解c++类的封装和KMP算法。 实验环境 Windows平台 VC6.0++ 实验内容(算法、程序、步骤和方法) 部分函数创建思想: 创建过程如下: a、定义LinkList指针变量*temp: LinkList *temp; b、定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i; c、申请动态存储空间:head->next=(LinkList *)malloc(sizeof(LinkList)); d、首行头指针的前驱指针为空:head->pre=NULL; 首行指针:temp=head->next; 首行指针的前驱指针也为空:temp->pre=NULL; 定义没输入字符时文章长度为0:temp->length=0; 初始化为字符串结束标志,防止出现乱码:for(i=0;i<80;i++) temp->data[i]='\0'; e、利用循环进行文本输入 for(j=0;jdata[i]=ch; //给temp指向的行赋值 ···· temp->length++;//行中字符长度加1 if(ch=='#') {NUM=j; break; //文章结束时,Num来记录整个文章的行数 }}} 在字符输入的过程中,如果在单行输入的字符超过了80个字符, 则需要以下操作: 输入字符数大于80,重新分配空间建立下一行 temp->next=(LinkList *)malloc(sizeof(LinkList)) ;

富文本编辑器的技术演进

富?文本编辑器?的技术演进

?目录一、富文本编辑器介绍 二、语雀文档编辑器面临的问题与解决思路 三、多人实时协同的解决思路

富?文本编辑器? - 常?见交互 富文本输入框 - 输入内容 - 选中 & 操作 操作栏 - 顶部工具栏 - 侧边栏 - 内嵌工具栏

富?文本编辑器? - 浏览器?特性 富文本输入框

这里可以编辑
对内容进行操作 document.execCommand(‘bold’);

富?文本编辑器? - 技术类型 类型描述典型产品 L01、基于 contenteditable 2、使?用 document.execCommand 3、?几千~?几万?行行代码 早期的轻量量级编辑器? L11、基于 contenteditable 2、不不?用 document.execCommand,?自主实现 3、?几万?行行~?几?十万?行行代码 CKEditor、TinyMCE Draft.js、Slate ?石墨??文档、腾讯?文档 L21、不不?用 contenteditable,?自主实现 2、不不?用 document.execCommand,?自主实现 3、?几?十万?行行~?几百万?行行代码 Google Docs O?ce Word Online iCloud Pages WPS ?文字在线版

富?文本编辑器? - 不不同类型的优劣 类型优势劣势 L0技术?门槛低,短时间内快速研发可定制的空间?非常有限 L1站在浏览器?肩膀上,能够满?足 99% 业务场景?无法突破浏览器?本身的排版效果 L2技术都掌控在?自?己?手中,?支持个性化排版技术难度相当于?自研浏览器?、数据库

百度Ueditor配置步骤

百度Ueditor配置步骤 一、官网上下载完整源码包,解压到任意目录,解压后的源码目录结构如下所示: _examples:编辑器完整版的示例页面 dialogs:弹出对话框对应的资源和JS文件 themes:样式图片和样式文件 php/jsp/.net:涉及到服务器端操作的后台文件,根据你选择的不同后台版本,这里也会不同,这里应该是jsp,php,.net third-party:第三方插件(包括代码高亮,源码编辑等组件) editor_all.js:_src目录下所有文件的打包文件 editor_all_min.js:editor_all.js文件的压缩版,建议在正式部署时才采用 editor_config.js:编辑器的配置文件,建议和编辑器实例化页面置于同一目录 二、部署UEditor到实际项目(UETest)中的步骤: 第一步:在项目的任一文件夹中建立一个用于存放UEditor相关资源和文件的目录,此处在项目根目录下建立,起名为ueditor。

第二步:拷贝源码包中的dialogs 、themes 、third-party 、editor_all.js 和editor_config.js 到ueditor 文夹中。其中,除了ueditor 目录之外的其余文件均为具体项目文件,此处所列仅供示例。 第三步:为简单起见,此处将以根目录下的index.aspx 页面作为编辑器的实例化页面,用来展示UEditor 的完整版效果。在index.aspx 文件中,首先导入编辑器需要的三个入口文件,示例代码如下: 1 2 3 编辑器完整版实例 第四步:然后在index.aspx 文件中创建编辑器实例及其DOM 容器。具体代码示例如下: 1 2 3 4 5 6 7 //下面是实例化 最后一步: 在/UETest/ueditor/ editor_config.js 中查找URL 变量配置编辑器在你项目中的路径。 1 2 //强烈推荐以这种方式进行绝对路径配置 URL= window.UEDITOR_HOME_URL||"/UETest/ueditor/"; 新增编辑器容器拖动缩放功能,配置项为:scaleEnabled 、minFrameWidth 、minFrameHeight 控制大小 congig.js 文件中 //,initialFrameWidth:1000 //初始化编辑器宽度,默认1000 //,initialFrameHeight:320 //初始化编辑器高度,默认320

几种常用网页文本编辑器总结

文本编辑器应用总结 一.lhgeditor文本编辑器 lhgeditor组件文件结构: 1. lhgeditor.js:组件的核心JS文件 2. lhgeditor.css:组件的样式表文件 3. images:组件所需的图片都在此文件夹中 以上三个文件为组件所必须的三个文件,组件包中其它以“_”开头的文件为示例的演示文件,实际使用中不需要这些文件。当然框架核心文件lhgcore.js是每个组件都必须用到的文件,记得加载组件前先要加载此文件。 lhgeditor组件使用说明: 1. 在调用组件的页面加载lhgcore.j s和lhgeditor.js两个文件。 2. 在window.onload函数里加入J.editor.add(编辑器的id).init(); 例:

二.nicEdit文本编辑器 再引入三个js文件ueditor.all.js、ueditor.config.js、lang/zh-cn/zh-cn.js,一定是在以上代码之后引入。 在需要使用编辑器的位置,添加代码如下: 标签。 3)引入相关文件 4)创建编辑器 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

C++课程设计简易文本编辑器

目录 第一章课程设计目的和要求 (1) 1.1课程设计的目 (1) 1.2基本要求 (1) 第二章课程设计任务内容 (2) 2.1设计背景 (2) 2.2简易文本编辑器设计内容 (2) 第三章详细设计 (3) 3.1总体结构图 (3) 3.2函数分析 (3) 3.3主函数程序流程图 (4) 3.4子函数流程图 (5) 第四章程序编码与调试 (7) 4.1程序编码 (7) 4.2编码调试 (8) 4.3运行结果 (9) 第五章课程设计心得与体会 (11) 附录1 参考文献 (12) 附录2 源程序代码 (13)

第一章课程设计目的和要求 C语言课程设计是一门实践性非常强的课程,不但要注重c语言程序设计基本知识的学习,更要注重程序设计技能的培养,使学生能够允许渐进地把握c语言程序设计的技能。通过课程设计,培养学生阅读和编写程序的能力,培养计算机程序设计的能力和素质,以及思维方法。初步积累编程经验,打下良好的计算机应用基础。 1.1课程设计的目 1.通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力, 能更好的巩固《c语言程序设计》课程学习的内容 2.掌握工程软件设计的基本方法,强化上级动手编程能力,闯过理论与实践相 结合的难关!更加了解了c语言的好处和其可用性。 3.掌握基本的程序设计过程和技巧,掌握基本的分析问题合理性,通过计算机 求解问题的能力,具备初步的高级语言程设计能力。为后续个门计算机课程 的学习和毕业设计打下结实基础。 4.通过c语言课程设计,使学生了解高级程序设计语言的结构。 1.2 基本要求 1.基本要求: ①要求用VC中的MFC控件打开和保存文件。 ②要求在设计的程序中至少能完成六种编辑功能。 ③完成的程序界面要美观,能够完成六种编辑的全过程。 2.创新要求: ①在记事本中增加工具栏,工具栏中应有常使用的工具按钮; ②在记事本中增加状态栏;

CKEDITOR富文本编辑器+AJAX+JQUERY+ListView综合应用

CKEDITOR富文本编辑器+AJAX+JQUERY+ListView综合应用 一、下载安装Ckeditor,并将其整合到项目中 1、什么是CKeditor?为什么要使用它? 我们在做门户网站或者公文系统时,客户经常要求在录入时能够更改字体样式、大小、颜色并具备插入图片的功能。而一般的TextBox无法满足我们的需求,此时就需要使用一种叫做富文本编辑器的东西,这类编辑器有很多,ckeditor就是其中一种,下面介绍其使用方法 2、如何下载 √ 进入官方网站https://www.doczj.com/doc/6515640468.html,/,点击Download进入下载页面 √ CKEDITOR支持多种编程语言及框架(如:java、https://www.doczj.com/doc/6515640468.html,、sharepoint等),我们选择https://www.doczj.com/doc/6515640468.html, √ 下载后解压,简单解释里面内容 3、下面讲如何将CKEditor整合到我们的应用中 √ 新建一个网站

√ 为了代码清晰,新建一个目录,起名JS,方便将ckeditor放到该目录下 √ 将解压后_Samples文件夹中的ckeditor目录拷贝到JS下

√ 新建网页,起名test_ckeditor √ 增加对ckeditor的引用 √ 调用,主要是通过对TextBox的格式化实现富文本的显示效果 √ 为了简便,我们引入JQUERY类库(一种使javascript更容易理解与编写的代码集合),从https://www.doczj.com/doc/6515640468.html,/下载

√ 将下载后的文件放到JS文件夹下 √ 引用jquery(通过将jquery类库拖放到title标签下) √ 页面上添加TextBox文本框(ID:TextBox1) √ 用ckeditor插件格式化TextBox1。在中添加如下代码 (注:以上代码表示当页面的所有元素加载完毕后用CKEDITOR.replace命令对TextBo x1这个文本框进行改造,让其看起来更炫) √ 按F5键预览,即可看到TextBox1被ckeditor格式化后的效果

细数几款免费好用的在线HTML编辑器

细数几款免费好用的在线HTML编辑器 先普及一下基本知识:什么叫在线HTML编辑器?说得简单点,在线HTML编辑器就是在网上发帖子、写博客的那个带编辑功能的框框,可以进行图文排版等操作。当年本菜鸟做网站的时候,曾经自己用javascript编写过一个比较简单的在线HTML编辑器,用于文本内容的排版。但是因为水平有限,很多功能都无法实现。后来有了eWebEditor,功能确实强大,但这个编辑器是个收费的软件,并且正因为功能强大,也就显得过重,一些轻量的场合不是太适用。那有没有既免费、又功能强大、还能适应轻量场合的在线HTML编辑器呢?答案肯定是有的。这首先要感谢这些年来有一批奉献精神的程序猿们不断推进共享软件的开发,让我们得以享受他们的成果。一、百度出品的UEditorUEditor是由百度web 前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。特别要说的是,头条号后台发布文章的编辑器就是用的UEditor!百度UEditorUEditor还有一个轻量版的,叫做UMeditor,简称UM。UM是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线HTML编辑器。主要特点是容量和加载速度上的改变,主文件的代码量为139k,而且放弃了使用传统的iframe模式,采用了

div的加载方式,以达到更快的加载速度和零加载失败率。UM的第一个使用者是百度贴吧,以经受贴吧每天几亿的pv 的考验,功能设计应当是最优化的了。当然随着代码的减少,UM的功能对于UE来说还是有所减少,但也有增加,比如拖拽图片上传,chrome的图片拖动改变大小等。百度UEditor界面二、xhEditor开源HTML编辑器xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化HTML编辑器,基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。xhEditor完全基于Javascript 开发,可以应用在任何的服务端语言环境下,例如:PHP、ASP、https://www.doczj.com/doc/6515640468.html,、JA V A等。可以在CMS、博客、论坛、商城等互联网平台上完美的嵌入运行,能够非常灵活简单的和您的系统实现完美的无缝衔接。 主要特点:精简迷你:初始加载4个文件,包括:1个js(50k)+2个css(10k)+1个图片(5k),总共65k。若js和css文件进行gzip压缩传输,可以进一步缩减为24k左右。使用简单:简单的调用方式,加一个class属性就能将textarea变成一个功能丰富的可视化编辑器。无障碍访问:提供WAI-ARIA全面支持,全键盘精细操作,全程语音向导,提供完美无障碍访问体验,充分满足残疾人的上网需求。内置Ajax上传:内置强大的Ajax上传,包括HTML4和HTML5上传支持(多文件上传、真实上传进度及文件拖放上传),剪切板上传及远程抓

相关主题
文本预览
相关文档 最新文档