第一個問題:廷時處理
在頁面剛加載的時候對FCK賦值,比如在信息列表中選中一條信息進行查看或修改的時候,信息添加的時候用FCK編輯的,加載頁面的時候會加載FCK編輯器,此時會報出一個錯誤:"FCKeditorAPI undefined",這是為什么呢,因為頁面加載對FCKeditorAPI 賦值時FCKeditorAPI 還沒創建好,所以才會出現這個錯誤。那如何解決呢?
我們做一個廷時處理就可以了:
//id:控件ID,data:對控件賦值的內容
function SetData(id,data) {
if (typeof FCKeditorAPI == "undefined" || !FCKeditorAPI.GetInstance(id).EditingArea) {
setTimeout(function() { SetData(id,data); }, 500);
return;
}
FCKeditorAPI.GetInstance(id).EditorDocument.body.innerHTML = data;
setTimeout(function() { FCKeditorAPI.GetInstance(id).Focus(); }, 100);
}
這樣就OK了,>.<
第二個地方:對DOM對象進行賦值
賦值的時候我們一般用FCKeditorAPI.GetInstance("控件ID").SetHTML("賦值字符串")來進行賦值,這樣也是正確的,但在頁面加載的時候這樣賦值是不行了,
如果這樣賦值你會發現鼠標焦點的控制就有問題了,獲取焦點也獲取不到,這個時候就要用另一種賦值方式了,對控件的DOM對象進行賦值:
FCKeditorAPI.GetInstance(“控件ID”).EditorDocument.body.innerHTML = “賦值字符串”;
這樣賦值焦點就恢復正常了。
碰到這個問題的時候也郁悶了好久,希望對使用FCK的朋友對遇到這樣的問題有點幫助。