现在的位置: 首页 > 综合 > 正文

c# .net 编写 HTML 编辑器的核心技巧 by shawl.qiu

2013年04月09日 ⁄ 综合 ⁄ 共 2489字 ⁄ 字号 评论关闭

c# .net 编写 HTML 编辑器的核心技巧 by shawl.qiu

说明:
之前我写过一个 纯 js 的 HTML 编辑器 sqEditor.
这里: http://blog.csdn.net/btbtd/archive/2007/01/16/1484070.aspx
那时是在使用 asp/vbs, asp/js 的脚本语言.

现在俺需要自己的 .net 版 HTML 编辑器,
其实不难写, 不外乎与 iframe 的数据读取, 然后再加个 submit 的 EventHandler
至于其他的操作, 跟我上次写的 纯 JS HTML 编辑器 没多大区别.

广告时间, sqEditor for .net 不日推出.

目录:
1. x.aspx
2. ac/sqEditor.ascx

shawl.qiu
2007-02-28
http://blog.csdn.net/btbtd

内容:
1. x.aspx

  1. <%@ Page Language="C#AutoEventWireup="True" %>
  2. <%@ Reference Control="ac/sqEditor.ascx" %>
  3. <script runat="server">
  4.  void Page_Load(Object s, EventArgs e)
  5.  {
  6.   Control sqEditor = LoadControl("ac/sqEditor.ascx");
  7.   sqEditorPlaceHolder.Controls.Add(sqEditor);
  8.  } // end Page_Load
  9. </script>
  10. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  11. <html xmlns="http://www.w3.org/1999/xhtml">
  12. <head>
  13. <meta http-equiv="Content-Typecontent="text/html; charset=utf-8" />
  14. <title>shawl.qiu template</title>
  15. </head>
  16. <body>
  17.  <form runat="server">
  18.   <asp:PlaceHolder id=sqEditorPlaceHolder runat=server 
  19.    />
  20.  </form>
  21. </body>
  22. </html>
  23.  

2. ac/sqEditor.ascx

  1. <%@ Control Language="C#AutoEventWireup="TrueclassName="sqEditor" %>
  2. <script runat="server">
  3.  void Page_Load(Object s, EventArgs e)
  4.  {
  5.   edSubmit.Attributes["onclick"] = 
  6.    "return fSetInnerHtml('"+ifm.ClientID+"','"+t.ClientID+"')";
  7.   
  8.   edSubmit.Click += new EventHandler(submit);
  9.  } // end Page_Load
  10.  
  11.  private void submit(Object s, EventArgs e)
  12.  {
  13.   Response.Write("<li/>~~~~~~~~"+t.Text);
  14.  }
  15. </script>
  16. <style type="text/css">
  17. /* <![CDATA[ */
  18.  .dspHd {display:none!important;}
  19. /* ]]> */
  20. </style>
  21. <script type="text/javascript">
  22. //<![CDATA[
  23.  onload=function()
  24.  {
  25.   fIntiIframe("<% Response.Write(ifm.ClientID); %>", "temp");
  26.  }
  27.  
  28.  function fIntiIframe(sId, sTempContentId)
  29.  {
  30.   try{
  31.    var ifmWin=document.getElementById(sId).contentWindow;
  32.    var ifmDcu=ifmWin.document;
  33.  
  34.    var sCt=document.getElementById(sTempContentId)
  35.    if(sCt!=nullsCt=sCt.innerHTML;
  36.    
  37.    ifmDcu.designMode="on";
  38.    ifmDcu.contentEditable=true;
  39.    ifmDcu.open();
  40.    if(!sCt) ifmDcu.write('--------&nbsp;'); else ifmDcu.write(sCt);
  41.    ifmDcu.close()
  42.    } catch(e){}
  43.  }
  44.   
  45.  function fSetInnerHtml(sId, sDivId)
  46.  { 
  47.    var ifmWin=document.getElementById(sId).contentWindow;
  48.    var ifmDcu=ifmWin.document;
  49.    var html = ifmDcu.body.innerHTML;
  50.    
  51.    var ifm = document.getElementById(sDivId);
  52.    ifm.value = html;
  53.   try{
  54.    } catch(e){}
  55.    return true;
  56.  }
  57. //]]>
  58. </script>
  59. <iFrame id=ifm runat=server></iFrame>
  60. <br/>
  61. <asp:Button id=edSubmit runat=server
  62.  Text = "Submit"
  63.  />
  64. <asp:TextBox id=t runat=server
  65.  CssClass="dspHd"
  66. /> 

 

抱歉!评论已关闭.