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
- <%@ Page Language="C#" AutoEventWireup="True" %>
- <%@ Reference Control="ac/sqEditor.ascx" %>
- <script runat="server">
- void Page_Load(Object s, EventArgs e)
- {
- Control sqEditor = LoadControl("ac/sqEditor.ascx");
- sqEditorPlaceHolder.Controls.Add(sqEditor);
- } // end Page_Load
- </script>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>shawl.qiu template</title>
- </head>
- <body>
- <form runat="server">
- <asp:PlaceHolder id=sqEditorPlaceHolder runat=server
- />
- </form>
- </body>
- </html>
- <%@ Control Language="C#" AutoEventWireup="True" className="sqEditor" %>
- <script runat="server">
- void Page_Load(Object s, EventArgs e)
- {
- edSubmit.Attributes["onclick"] =
- "return fSetInnerHtml('"+ifm.ClientID+"','"+t.ClientID+"')";
- edSubmit.Click += new EventHandler(submit);
- } // end Page_Load
- private void submit(Object s, EventArgs e)
- {
- Response.Write("<li/>~~~~~~~~"+t.Text);
- }
- </script>
- <style type="text/css">
- /* <![CDATA[ */
- .dspHd {display:none!important;}
- /* ]]> */
- </style>
- <script type="text/javascript">
- //<![CDATA[
- onload=function()
- {
- fIntiIframe("<% Response.Write(ifm.ClientID); %>", "temp");
- }
- function fIntiIframe(sId, sTempContentId)
- {
- try{
- var ifmWin=document.getElementById(sId).contentWindow;
- var ifmDcu=ifmWin.document;
- var sCt=document.getElementById(sTempContentId)
- if(sCt!=null) sCt=sCt.innerHTML;
- ifmDcu.designMode="on";
- ifmDcu.contentEditable=true;
- ifmDcu.open();
- if(!sCt) ifmDcu.write('-------- '); else ifmDcu.write(sCt);
- ifmDcu.close();
- } catch(e){}
- }
- function fSetInnerHtml(sId, sDivId)
- {
- var ifmWin=document.getElementById(sId).contentWindow;
- var ifmDcu=ifmWin.document;
- var html = ifmDcu.body.innerHTML;
- var ifm = document.getElementById(sDivId);
- ifm.value = html;
- try{
- } catch(e){}
- return true;
- }
- //]]>
- </script>
- <iFrame id=ifm runat=server></iFrame>
- <br/>
- <asp:Button id=edSubmit runat=server
- Text = "Submit"
- />
- <asp:TextBox id=t runat=server
- CssClass="dspHd"
- />