自己动手,结合javascript和dhtml做一个ubb编辑器

  • 来源: 互联网 作者: 若水   2008-03-17/11:56
  • 看到chinaASP论坛的abc code editor了吗?是不是觉得很cool? 说真的,刚见到我还以为是用别的什么语言做的控件呢,
    后来才发现没有那么神秘的。前几天做一个商品bbs,客户要求支持ubb,同时也要做一个编辑器。现在我把做ubb的思路给大家讲
    一下。
        首先遇到的是界面问题,实际上这个很好解决,只是利用td的onmouseover、onmouseout和onmousedown来实现,具体实现方
    法件下面的代码。
        其次就是实现文本效果的问题,这个可以利用textRange的execCommand方法来实现。

       下面我给出一个简单的例子,你可以把它存为一个html文件,直接可以运行,这个例子的功能很简单,就是把编辑框中选定的
    文字变为粗体或斜体。其他功能你可以参照这个例子自己加上。
    对了,先把这两个图片存下来。

    file : ubb.html

    <HTML>
    <HEAD>

    <TITLE>ubb演示</TITLE>
    </HEAD>
    <BODY>
    <br><br>
    <table width=300 cellspacing=2 cellpadding=2 border=0  bgcolor=lightgrey>
       <tr>
           <td id=tdBold  onclick=doAction("Bold") onmousedown="DoDown(tdBold );" onmouseover = "On_Mouseover
    (tdBold) ;" onmouseout="On_Mouseout(tdBold);">
              <img src='bold.gif' width=16 height=16  >
           </td>
           <td id=tdItalic onclick=doAction("Italic") onmousedown="DoDown(tdItalic);" onmouseover
    = "On_Mouseover(tdItalic) ;" onmouseout="On_Mouseout(tdItalic);">
              <img src='italic.gif' width=16 height=16 >
           </td>
           <td width=268>&nbsp;</td>
       </tr>
       <tr>
           <td colspan=3>
             <iframe id=Editor name=Editor border=0 scroll=no width=300 height=200>
             </iframe>
           </td>
       </tr>
    </table>           

    </BODY>
    </HTML>

    <script language=javascript>
      
      //initialize the iframe
      Editor.document .designMode = "On" ;
      Editor.document .open ;
      Editor.document .write ("&nbsp;") ;
      Editor.document .close ;
      Editor.focus ();
      
      function On_Mouseover(thisTD)
        {
          thisTD.style .borderLeft = "1px solid buttonhighlight" ;
          thisTD.style .borderRight = "1px solid buttonshadow";
          thisTD.style .borderTop = "1px solid buttonhighlight";
          thisTD.style .borderBottom = "1px solid buttonshadow";
        }

      function On_Mouseout(thisTD)
        {
          thisTD.style .borderLeft = "" ;
          thisTD.style .borderRight = "";
          thisTD.style .borderTop = "";
          thisTD.style .borderBottom = "";
        }
        
      function DoDown(thisTD)
        {
            thisTD.style .borderLeft   = "1px solid buttonshadow";
            thisTD.style .borderRight  = "1px solid buttonhighlight";
            thisTD.style .borderTop    = "1px solid buttonshadow";
            thisTD.style .borderBottom = "1px solid buttonhighlight";
            thisTD.style .paddingTop    = "2px";
            thisTD.style .paddingLeft   = "2px";
            thisTD.style .paddingBottom = "0px";
            thisTD.style .paddingRight  = "0px";    


        }  
        
      function doAction(str)#p#分页标题#e#
        {
          var m_objTextRange = Editor.document .selection.createRange();
          m_objTextRange.execCommand(str) ;
        }    
        

    </script>      


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多