1.创建问题:
如果是Ajax方式创建,只能使用KE.init与KE.create来创建
如果是非Ajax方式,只能通过Ke.show来创建。
2.数据保存问题:
如果是所建即所得的方式来保存数据,需要使用setInterval(new Function('KE.util.setData("'+descId+'")'),500);
而使用SetInterval会导致默认值丢失的bug,因此需要将此段代码放到KE.g[id].afterCreate事件里面。
setData的修改:setData : function(id) {
if (KE.g[id].srcTextarea)
{
var val=this.getData(id);
if(KE.g[id].srcTextarea.value!=val&&val)
{
var valLen=val.length;
var start=val.length-6;
if(valLen>=7 && val.substring(0,3)=="<p>" && val.lastIndexOf("</p>",start)==start)
{
val=val.substring(3,val.length-6);
this.setFullHtml(id,val);
}
KE.g[id].srcTextarea.value = val;
if(KE.g[id].srcTextarea.onchange)
KE.g[id].srcTextarea.onchange();
}
}
},
对P的处理是因为浏览器(IE,FF)如果全选编辑器的文字,再进行输入,则会默认生成P标签,在(CHROME)里不会出现。
3.图标的处理,由于图标过多,会出现图标DIV宽度超过屏幕总宽度的问题,在Show MENU的时候进行了额外的处理:
this.show = function(checkWidth) {
this.hide();
var id = arg.id;
KE.g[id].hideDiv.style.display = '';
if(checkWidth)
{
var bodyWidth=document.documentElement.clientWidth||document.body.clientWidth;
var leftX=parseInt(this.div.style.left);
if(leftX+452>bodyWidth)
{
leftX=bodyWidth-452-20;
this.div.style.left=leftX+"px";
}
}
KE.g[id].hideDiv.appendChild(this.div);
};
4. 上传图片换成了自己的控件
5.IE里面过滤Word格式,可以不需要弹出纯文本粘贴框。
在KE.create最后加入这段代码:
KE.event.ctrl(KE.g[id].iframeDoc, 'V', function(e) {
KE.plugin['pastetextfromword'].click(id);
});
KE.plugin['pastetextfromword'] = {
click : function(id) {
//KE.plugin['paste'].click(id);
//return;
if(window.clipboardData)
{
var text="";
try
{
text=clipboardData.getData("Text");
KE.util.selection(id);
text = text.replace( /&/g, '&' ) ;
text = text.replace( /</g, '<' ) ;
text = text.replace( />/g, '>' ) ;
text = text.replace(/\r\n|\n|\r/g, "<br />$&");
KE.util.insertHtml(id, text);
}
catch(e)
{
KE.plugin['plainpaste'].click(id);
}
}
else
KE.plugin['plainpaste'].click(id);
}
};
6.对IE ShowModalDialog的支持:
在KE.create事件里面加入代码:
if(KE.browser.IE)
iframeDoc.body.contentEditable="True";
同时在创建工具栏的时候,对A元素的href从javascript:;修改为#(防止弹出一个新的窗口)