

<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> 
 
<input type="submit" name="Submit" value="提交"> 
<input type="button" value="iframe->textarea" onClick="getIframeData()"> 
<input type="button" value="textarea->iframe" onClick="sentIframeData()"> 
<input type="button" value="B" onClick="doB()"> 
</form> 
</body> 
</html>首先要有一个编辑框,这个编辑框其实就是一个可编辑状态的网页, 我们用iframe来建立编辑框。 
<IFRAME id=“HtmlEdit” style="WIDTH: 100%; HEIGHT: 296px" marginWidth=“0” marginHeight=“0”></IFRAME> 
并且在加上javascript代码来指定HtmlEdit有编辑功能: 
<script language="javascript"> 
var editor; 
editor = document.getElementById("HtmlEdit").contentWindow; 
//只需键入以下设定,iframe立刻变成编辑器。 
editor.document.designMode = 'On'; 
editor.document.contentEditable = true; 
//但是IE与FireFox有点不同,为了兼容FireFox,所以必须创建一个新的document。 
editor.document.open(); 
editor.document.writeln('<html><body></body></html>'); 
editor.document.close(); 
//字体特效 - 加粗方法一 
function addBold() 
{ 
editor.focus(); 
//所有字体特效只是使用execComman()就能完成。 
editor.document.execCommand("Bold", false, null); 
} 
//字体特效 - 加粗方法二 
function addBold() 
{ 
editor.focus(); 
//获得选取的焦点 
var sel = editor.document.selection.createRange(); 
insertHTML("<b>"+sel.text+"</b>"); 
} 
function insertHTML(html) 
{ 
if (editor.document.selection.type.toLowerCase() != "none") 
{ 
editor.document.selection.clear() ; 
} 
editor.document.selection.createRange().pasteHTML(html) ; 
} 
</script> 
WEB在线编辑器原理 
转载自:http://blog.fhuang.com/article.asp?id=239 
从eWebEditor到 FCKeditor现在有很多很多的在线编辑器了,功能都很强,很多,但是其基本原理却都很简单 
我发现的编辑器主要有3大类,我总结下,把各自的优缺点都写下 
直接用textarea 标签 
优点:速度快,提交方便,可以用UBB标签来弥补不能所见所得 
缺点:不直观,功能非常少 
用 DIV或者TABLE的CONTENTEDITABLE 标签,属性来让一个区域可以编辑 
优点:可以很直观,可以做各种效果 
缺点:此标签在mozilla下不可用,只适合IE浏览器,且对js要求高 
用iframe或者frame的中的document的document.designMode ="On" 来实现可编辑 
优点:具有上面第二条的全部优点,并且还多浏览器比如FF等支持 
缺点:对js要求高 
下面是第三点的一个简单例子代码 
<iframe MARGINHEIGHT="1" MARGINWIDTH="1" width="400" height="100"></iframe> 
<script language="JavaScript"> 
<!-- 
//get frame object 
frameobj=frames[0]; 
bodyHtml="<head>\n<style type=\"text/css\">body {font: 10pt verdana;}</style>\n</head>\n<BODY bgcolor=\"#FFFFFF\" MONOSPACE>" 
bodyHtml += "<style>\np{margin:0px;padding:0px;}\n</style>\n</body>"; 
frameobj.document.open(); 
frameobj.document.write(bodyHtml); 
frameobj.document.close(); 
frameobj.document.designMode="On"; 
//--> 
</script>