[转载]解決一个頁面有多个FCKeditor时无法使用FCKeditorAPI.GetInstance的问题(推荐)

.

FCKeditor跟使用的TinyMCE WordPress的一样,都是开源的WYSIWYG编辑器(所见即所得编辑器) ,一直以来比较习惯用FCKeditor这套编辑器来帮网页加入可以编辑的HTML的功能,但今天突然发现如果一个页面有两个FCKeditor且在 Firefox的运行时,若要使用FCKeditorAPI.GetInstance ( )来取得编辑器的实例,只有第一个可以正确取得,第二个将会是未定义的,第三个以上没试但应该也难逃厄运了。

运行环境:

  • Firefox 3.0.1
  • FCKeditor 2.6.3

发生错误可能原因:

  1. fckeditorcode_gecko.js 有Bug
  2. Firefox有Bug或与FCKeditor有小部份冲突

解決概念:

如果是第一个原因,我实在没兴趣把压缩过的 fckeditorcode_gecko.js解回来检查(压缩过都还有253K啊! ) ,更别说有缺陷的Firefox能帮上什么忙了,不过幸好在FCKeditor JavaScript的空气污染指数有提到,可以建立一个名为FCKeditor_OnComplete的回调函数,当FCKeditor载入完毕后将会 呼叫这个函数并传入一个参数,这个参数就是目前装载完毕的FCKeditor例如,只要把这个参数记录下来,就可以直接使用例如,不需要用 FCKeditorAPI.GetInstance ( )来取得,这样一来便解决问题了。

 

解決方式:

在FCKeditor载入之前加入以下JavaScript

  1. //修正FckEditor错误
  2. var __fckEditorInstance_ = new Array();//用来储存FCKeditor Instance的阵列
  3. function FCKeditor_OnComplete( editorInstance )
  4. {
  5. __fckEditorInstance_[editorInstance.Name] = editorInstance;
  6. }
  7. function getFckInst(idname)
  8. {
  9. return __fckEditorInstance_[idname];
  10. }

之后就可以利用getFckInst()來代替FCKeditorAPI.GetInstance()取得FCKeditor Instance

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏