• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Hello World
This is the first demo for each programming language
            管理     

HTML编辑器原理

为什么能实现在线编辑呢?  首先需要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" onClick="getIframeData()">
<input type="button" value="textarea->iframe" onClick="sentIframeData()">
<input type="button" value="B" onClick="doB()">
</form>
</body>
</html>
在线编辑器在我们日常的项目开发中非常有用(如新闻系统),它可以方便地实现文章的在线编辑,省掉了FrontPage等工具。那么是怎样实现浏览器在线编辑功能的呢?  首先需要IE的支持,在IE5.5以后就有一个编辑状态. 就是利用这个编辑状态,然后用javascript来控制在线编辑的。
首先要有一个编辑框,这个编辑框其实就是一个可编辑状态的网页, 我们用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>
posted @ 2009-05-26 20:44  Justin X  阅读(2487)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3