最近好多朋友问到
Fckeditor的自动保存功能,在此写一下自己是怎么实现的。其实思路很简单。
- 页面载入时注册TimeOut事件,以监控指定Fckeditor的内容
- 当TimeOut事件确发时,如果Fckeditor的内容发生变化则自动保存,再重新注册TimeOut事件
- 如果保存自己去实现吧,文本,XML,数据库都可以
- 其实个人觉得最郁闷的就是如何取得Fckeditor的内容,特别在.NET下直接使用工具栏放入而不是使用Fckeditor API实现的情况下,这个我研究出来了,可以看我附的Js源码。
<!--
/*
为FckEditor增加自动备份功能
网页运行时注册FckeditorAutoSave
为吕的部落格定制,基于会员
需要在页面中设置一个id="
研究了好久才取得Fckeditor值,郁闷...
Powered By Lvjiyong.com
使用或转载请勿删除作者信息
吕继勇 2006.5.31
*/
var FckAutoSaveTime
var FckeditorNum;
var FckUpdateId;
var FckTitle;
var FckInfo;
var GUID;
var url = "http://www.lvjiyong.com/Admin/Blog/Article/PostNew.aspx"; //保存处理地址
var Fcktemp = '';
function FckedtiorAutoSave(autoSaveTime,fckeditorNum,updateId,fckTitle,fckinfo,guid)
{
FckAutoSaveTime = autoSaveTime;
FckeditorNum = fckeditorNum;
FckUpdateId = updateId;
FckTitle = fckTitle;
FckInfo = fckinfo;
GUID = guid;
window.setTimeout( "FCKTimer()",FckAutoSaveTime);
}
function FCKTimer()
{
FckSave();
window.setTimeout( "FCKTimer()",FckAutoSaveTime);
}
function FckSave()
{
var body = getFckeditorContent(FckeditorNum);
if( Fcktemp != body && body.length > 36)
{
$(FckUpdateId).innerHTML = FckInfo;
var title = $F(FckTitle);
var postData = 'ajaxaction=FckeditorAutoSave&GUID=' + GUID + '&Title=' + title + '&Body=' + body;
var myAjax = new Ajax.Updater(FckUpdateId, url, {method: 'post', postBody: postData});
Fcktemp = getFckeditorContent(FckeditorNum);
}
}
function getFckeditorContent(fckeditorNum)
{
return window.frames[fckeditorNum].window.frames[0].document.body.innerHTML;
//return window.frames[最好用名称].window.frames[0].document.body.innerHTML;
}
-->
/*
为FckEditor增加自动备份功能
网页运行时注册FckeditorAutoSave
为吕的部落格定制,基于会员
需要在页面中设置一个id="
研究了好久才取得Fckeditor值,郁闷...
Powered By Lvjiyong.com
使用或转载请勿删除作者信息
吕继勇 2006.5.31
*/
var FckAutoSaveTime
var FckeditorNum;
var FckUpdateId;
var FckTitle;
var FckInfo;
var GUID;
var url = "http://www.lvjiyong.com/Admin/Blog/Article/PostNew.aspx"; //保存处理地址
var Fcktemp = '';
function FckedtiorAutoSave(autoSaveTime,fckeditorNum,updateId,fckTitle,fckinfo,guid)
{
FckAutoSaveTime = autoSaveTime;
FckeditorNum = fckeditorNum;
FckUpdateId = updateId;
FckTitle = fckTitle;
FckInfo = fckinfo;
GUID = guid;
window.setTimeout( "FCKTimer()",FckAutoSaveTime);
}
function FCKTimer()
{
FckSave();
window.setTimeout( "FCKTimer()",FckAutoSaveTime);
}
function FckSave()
{
var body = getFckeditorContent(FckeditorNum);
if( Fcktemp != body && body.length > 36)
{
$(FckUpdateId).innerHTML = FckInfo;
var title = $F(FckTitle);
var postData = 'ajaxaction=FckeditorAutoSave&GUID=' + GUID + '&Title=' + title + '&Body=' + body;
var myAjax = new Ajax.Updater(FckUpdateId, url, {method: 'post', postBody: postData});
Fcktemp = getFckeditorContent(FckeditorNum);
}
}
function getFckeditorContent(fckeditorNum)
{
return window.frames[fckeditorNum].window.frames[0].document.body.innerHTML;
//return window.frames[最好用名称].window.frames[0].document.body.innerHTML;
}
-->