判断页面是否加载完毕js,并初始化fckeditor的内容
一、IE5.5以上可用,判断页面加载完毕
var timer ;
function checkload() {
if (document.readyState == "complete") {
clearInterval(timer);
var fckobj = FCKeditorAPI.GetInstance("contest");
alert(fckobj);
fckobj.EditorDocument.getElementById("but").value = "fuck";
} else{
timer = setInterval("checkload()", 100);
}
}
checkload();
二、for Mozilla 判断文档内容加载完毕
document.addEventListener("DOMContentLoaded",
function(){
alert("firefox DOM加载完毕!");
var fckobj = FCKeditorAPI.GetInstance("contest");
fckobj.EditorDocument.getElementById("but2").value = "shit";
}, null);
三、如果上面的不好用,给个通用的,这个函数在完全加载完fckeditor后,自动调用,有什么对fckeditor操作的内容,就可以写在里面了!
function FCKeditor_OnComplete(oFCKeditor) {
var fckobj = FCKeditorAPI.GetInstance("contest");
fckobj.EditorDocument.getElementById("but1").value = "fuck";
}
四、为fckeditor中的控件添加内容
<script type="text/javascript">
var oFCKeditor = new FCKeditor('contest', true) ;
oFCKeditor.BasePath = '../../fckeditor/';
oFCKeditor.ToolbarSet = 'Default';
oFCKeditor.Width = '740px';
oFCKeditor.Height = '400px';
oFCKeditor.Value = "<input type=button id=but1>";
//加载模板0
oFCKeditor.Create();
function FCKeditor_OnComplete(oFCKeditor) {
var fckobj = FCKeditorAPI.GetInstance("contest");
fckobj.EditorDocument.getElementById("but1").value = "fuck";
}
</script>
五、在外部调用fckeditor的控件操作
获取fckeditor对象有两种方法
1、var fckobj = FCKeditorAPI.GetInstance("contest");
2、var fckobj2 = FCKeditorAPI.GetInstanceObject("contest");
以上两种都可以创建一个fckeditor对象
获取可操作的控件对象,传入的字符串,在fckconfig.js中的ToolbarSets里
var comm = fckobj2.Commands.GetCommand("Templates")
执行操作
comm.execute();
获取文本域的html内容
fckobj2.GetHTML();
六、异步加载模板
function getHTML(o) {
var r = "";
for (var i = 0; i < o.childNodes.length; i++)
r += o.childNodes[i].nodeValue;
return r;
}
//Index:要加载的模板的索引号,从0开始
//url:模板xml的路径,相对当前页面
//使用ajax加载xml模板文件,防止google浏览器不支持当前通用的xml加载的方法从而不能在
function ShowBo__LoadTemplates(Index, url) {
url += "?ts=" + new Date().toString();
var o;
if (window.XMLHttpRequest)
o = new XMLHttpRequest();
else if (window.ActiveXObject)
o = new ActiveXObject("microsoft.xmlhttp");
else {
alert("浏览器不支持当前流行的ajax!");
return "";
}
if (o) {
//同步
o.open('get', url, false);
o.send(null)
var dom = o.responseXML;
//获取模板html
var tmps = dom.getElementsByTagName("Html");
//没有模板或者路径出错时则返回空
if (tmps.length == 0)
return "";
//索引号大于模板数量则默认第一个模板
if (Index >= tmps.length)
Index = 0;
return document.all ? tmps[Index].firstChild.nodeValue : getHTML(tmps[Index]);
}
}
//加载模板1====================指定配置文件目录
//var tmpHtml = ShowBo__LoadTemplates(1, 'fcktemplates.xml');
七、编辑内容提交问题
在fckeditor编辑完之后,我们有两种情况要提交:一、是再提交到另一个页面;二、是提交到服务器。
提交服务器我们会把内容添加到数据库,这个可以,但是从数据库取出内容在页面显示,会报“未结束的.....”提示,这是因为你保存的数据有很多回车,导致内容不连贯。
为了解决这个问题,只需要将内容的全部空白字符替换掉再使用。
java代码:
request.getParameter("record").replace("\r\n", "");
javascript代码:
1、先在编辑页面用使用url传递编辑内容,然后在参数的传递上经过一下处理
FCKeditorAPI.GetInstance("desofimage").GetHTML()
2、在显示页去掉空白字符,这里用的el表达式
"${param.desofimages}".replace(/^\s+|\s+$/g, "")