李栋的博客
当我们年轻的时候不懂得,当我们懂得的时候已不在年轻!!
  在线HTML编辑器原理    上一篇  下一篇    
  发布者:李栋 |  浏览(8085) 评论 (18)  | 发布时间:2007-12-07 16:03:17 最后更新时间:2007-12-07 16:19:14  
  本作品所属分类:技术 文章类型:普通 推送到圈子 | 推荐给好友| 我要举报| 收入我的网摘  
 
在线HTML编辑器原理
从eWebEditor到 FCKeditor现在有很多很多的在线编辑器了,功能都很强,很多,但是其基本原理却都很简单我发现的编辑器主要有3大类,我总结下,把各自的优缺点都写下:
1.直接用textarea 标签
优点:速度快,提交方便,可以用UBB标签来弥补不能所见所得
缺点:不直观,功能非常少
2.用DIV或者TABLE的CONTENTEDITABLE 标签,属性来让一个区域可以编辑
优点:可以很直观,可以做各种效果
缺点:此标签在mozilla下不可用,只适合IE浏览器,且对js要求高
3.用iframe或者frame的中的document的document.designMode ="On" 来实现可编辑
优点:具有上面第二条的全部优点,并且还多浏览器比如FF等支持
缺点:对js要求高
4.第三种在线编辑器的原理:为什么能实现在线编辑呢?  首先需要ie 的支持,在 ie 5.5以后就有一个编辑状态,就是利用这个编辑状态,然后用javascript 来控制在线编辑的。下面给出一个简短的例子:首先要有一个编辑框,这个编辑框其实就是一个 可编辑状态的 网页,我们这里用iframe 来建立编辑框
<IFRAME id=HtmlEdit style="WIDTH: 100%; HEIGHT: 296px" marginWidth=0 marginHeight=0> </IFRAME>
并且在 加上javascript 代码来指定 HtmlEdit 有编辑功能:
function document.onreadystatechange(){
  HtmlEdit.document.designMode="On";
}
HtmlEdit.document.body.innerHTML  这句可以获得 HtmEdit 里面的html代码. 一般的我们会用这样的javascript 将 iframe 里的内容传递给一个textarea 然后提交给服务器处理.
function getIframeData(){
   document.form1.test.value=HtmlEdit.document.body.innerHTML;
}
function sentIframeData(){
   HtmlEdit.document.body.innerHTML=document.form1.test.value;
}
var sel = HtmlEdit.document.selection.createRange(); 而这一句可以获得选取的焦点:
下面我就演示一个完成的例子. 一个拥有加粗功能的在线编辑器,有兴趣的朋友可以在此基础上完成其他功能!!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="javascript">
function getIframeData(){
 document.form1.test.value=HtmlEdit.document.body.innerHTML;
}
function sentIframeData(){
 HtmlEdit.document.body.innerHTML=document.form1.test.value;
}
function doB(){
  HtmlEdit.focus();
  var sel = HtmlEdit.document.selection.createRange();
  insertHTML("<b>"+sel.text+"</b>");
}
function insertHTML(html) {
 if (HtmlEdit.document.selection.type.toLowerCase() != "none"){
   HtmlEdit.document.selection.clear() ;
   }
  HtmlEdit.document.selection.createRange().pasteHTML(html) ;
}
function document.onreadystatechange(){
   HtmlEdit.document.designMode="On";
}
</script>
</head>
<body>
<form action="test.asp?act=add" method="post" name="form1">
 
<IFRAME id=HtmlEdit style="WIDTH: 100%; HEIGHT: 296px" marginWidth=0 marginHeight=0></IFRAME>
<textarea name="test" rows="10" id="test" style="width:100%;"></textarea>
<br/>
<input type="submit" name="Submit" value="提交">
<input type="button" value="iframe->textarea">
<input type="button" value="textarea->iframe">
<input type="button" value="B">
</form>
</body>
</html>
5.现在常用的有:a. FCKeditor 编辑器(最新版本: 2.3.1站点:http://www.fckeditor.net 演示http://www.fckeditor.net /demo特点:开源、免费)
 

b. eWebEditor在线编辑器(最新版本:4.0站点:http://www.ewebsoft.com/ 演示:http://ewebeditor.webasp.net/demo.asp 特点:国产、易用)

3. WYSIWYG Editor在线编辑器注:WYSIWYG是What You See Is What You Get(所见即所得)首字母组合(最新版本:2.9.7 站点:http://www.innovastudio.com/editor.asp 演示: http://www.innovastudio.com/editor_tutorial.asp 特点: 物有所值)

评论列表
(以下网友留言只代表其个人观点,不代表本站的观点或立场)

发布者 :dcf (2010-10-29 07:59:07)  回复

fdgsdf

发布者 :匿名 (2009-06-03 17:57:11)  回复

试了一下,不错,谢谢。

发布者 :试试 (2009-04-26 23:55:08)  回复

色 反攻倒算立刻广泛但是

发布者 :匿名 (2009-04-13 10:34:19)  回复

引用:以下是匿名发表的:

引用:以下是匿名发表的:

试了一下,没成功。

fggffgfgfgfgfgffgfg

哈哈,很不错啊

发布者 :呵呵 (2009-04-03 13:11:36)  回复

引用:以下是要云发表的:

看不懂,不敢乱说。

刚旅行回来,看留言,看到您的留言,谢谢鼓励。也望常来走走,指点指点。

支持!

发布者 :黑糊糊 (2009-04-03 13:10:22)  回复

hghghghg

发布者 :匿名 (2009-04-03 13:08:46)  回复

引用:以下是匿名发表的:

试了一下,没成功。

fggffgfgfgfgfgffgfg

发布者 :匿名 (2009-04-03 13:06:46)  回复

引用:以下是iii发表的:                                                    

                                                   

看了看不懂全是英语啊hhghghghg

                                                                                                       

发布者 :匿名 (2009-04-03 13:03:41)  回复

gfffffffffffffffffffffff

发布者 :ggg (2009-04-03 12:59:06)  回复

gfgfgfgfgfgf

发布者 :匿名 (2009-04-03 12:58:25)  回复

作者强大。。。收了。

发布者 :匿名 (2009-03-30 14:42:20)  回复

fgf
fgf
fgfgfgfgf

发布者 :匿名 (2009-03-24 10:54:06)  回复

非常感谢

发布者 :雪人 (2008-12-10 21:08:37)  回复

看了看不懂全是英语啊

发布者 :iii (2008-11-15 09:32:11)  回复
18 篇, 2 « 1 2 »
  
昵称: (必填)    请您文明上网、理性发言并遵守相关规定
内容:
湘ICP证010023 版权所有:华声在线股份有限公司