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.qiu2007-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>
2. ac/sqEditor.ascx
<
%@ 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" />