FCKeditor的几则学习总结

来源:互联网 发布:效果图制作软件 编辑:程序博客网 时间:2024/06/05 04:35

FCKeditor是一个优秀的开源Web Rich Editor. 套用一句广告词,FCKeditor,挺好的,我们天天都用它。

以前研究过其源代码,也做了一些Crack的事情,下面把以前总结的东西翻出来晾晾吧。

1、如何获取Fckeditor的文档内容
FCK.EditorDocument.getElementsByTagName("html")[0]

2、FCKEnterKey._FixBlock 如果新的段落没有tag标签,则添加一个,在var oFixedBlock = this.Window.document.createElement( blockTag ) ; 之后,可以设置其ID;

3、bSuccess = object.execCommand(sCommand [, bUserInterface] [, vValue])
让一个选定的对象执行一个内置的命令,比如:
var sText = document.selection.createRange();
document.execCommand("CreateLink");

4、在FCKEditor中按一个键之后,执行的代码顺序是:
FCKKeyStrokeHandler._FCKKeystrokeHandler_OnKeyPress() →
fcktools_xxx.AddEventListenerEx() →
FCKKeyStrokeHandler._FCKKeystrokeHandler_OnKeyPress()  →
fcktools_xxx.AddEventListenerEx()

5、在一个段落的段首回车时,执行fckkeyenter.js._ExecuteEnterBlock() 其中,是将原来的一个Block clone了一下,但这样就有问题,如果原来的Block有id属性的话,那么新的段落的id也将与其一样。
需要在eStartBlock.parentNode.insertBefore(eNewBlock, eStartBlock);之后显示的设置 eNewBlock.id = "xxxxxxx"; near Line 325

6、需要注意的问题是:所有的fckeditor的js source code,都是在一个fckeditor.html中起作用的,在其包含文件中调用fckeditor.js时,需要注意。

7、如何获得当前正在编辑的段落id?
在编辑器中插入一个空元素,然后获取该元素的顶层非Body父元素即可
  var oSel2 = FCK.CreateElement("span");
  while (oSel2.parentNode && oSel2.parentNode.tagName != "BODY") {
   oSel2 = oSel2.parentNode;
  } 

原创粉丝点击