天天看點

Ajax應用中CKEDITOR多執行個體問題的解決

著名的Fckeditor更新之後就改名叫了CKEDITOR,界面和功能有了很大的提升,是以我在最近的項目中應用CKEDITOR。随着項目的深入,在Ajax應用較多的一個部分使用CKEDITOR時發現了問題,描述如下:

通過單擊一個連結,調入需要顯示的内容,其中包括一個富文本編輯器,這裡使用了CKEDITOR。第一次調入時,一切正常。噩夢從第二次開始,在Firefox3.5+中,第二次的時候提示 i.contentWindow is null ,而在IE系列中則是一些模糊的錯誤提示。

出現這個問題後,分析的方向一直集中在CKEDITOR多執行個體的問題。因為第一次點選連結,調用内容時,已經進行了一次CKEDITOR的執行個體化,第二次調入時必然會與第一次的沖突。查閱了CKEDITOR的樣例資料,試了下面的方法:

if( editor ){   editor.destroy();   editor = null; } editor = CKEDITOR.replace(‘content’);

但是沒有用,問題依然發生。後來google之,得到了目前可以正常解決這個問題的方法

if( CKEDITOR.instances['content'] ){     CKEDITOR.remove(CKEDITOR.instances['content']); CKDEITOR.replace(‘content’);

應用了這個方法之後,不管是多少次調用,都不會再發生錯誤,應該就是正确的解決方法了,但是可惜的是在CKEDITOR的官方文檔和論壇中均為看到相關的說明,遺憾…

參考資料: