CKEditor使用中遇到的問題解決

木坦坦發表於2016-07-27

最近做一專案中使用到了CKEditor元件,在感嘆CKEditor元件功能強大使用方面的同時,也被一些小問題深深的困擾了好久,問題及解決方法總結如下(使用CKEditor版本為3.5.3):

1、在引入CKEditor的ckeditor.js檔案之後,在IE瀏覽器下顯示正常,可是在firefox(版本4.0)瀏覽器下不顯示,用firebug檢視後提示CKEditor中有幾處檔案存在編碼錯誤,CKEditor檔案使用的是utf-8編碼,而在firefox頁面載入時把js檔案的編碼轉換為ISO-8859-1,導致不支援中文編碼出錯(出錯地方好像是CKEditor加的註釋前加的空格有問題)。此後無論怎麼統一編碼為utf-8(js檔案、頁面),以及在頁面載入js時指定編碼格式都無用,firefox還是一如既往的把載入的js檔案轉換為ISO-8859-1格式,最後沒轍只有把CKEditor中提示編碼出錯的地方的全部刪除。這時編輯框上的提示的中文均為亂碼,在無奈之下只好把zh-cn.js中的內容複製寫到頁面上,這時就CDEditor就會讀取頁面上的含中文的指令碼程式碼,從而解決了firefox瀏覽器上的編輯框中文顯示亂碼問題。

 (誰有好的解決firefox載入js檔案時指定js編碼格式的方法可以指點下,大家共同學習!)

2、在為CKEditor的編輯框設定值時,發現用CKEDITOR.instances.content.setData()的方法設值時提示函式有問題,推測應為設定的內容裡含有CKEditor增加格式中含有引號的緣故。解決方法為直接把值賦為textarea的內容即可,如:

/n 我是中國人

/n,CKEditor會把textarea的內容解析到自己定義的編輯框中。

以下問題是遇到的相關問題

3、使用jquery非同步請求後伺服器端返回的json字串含有的中文解析為“??”的情況,網上查了下,一般的解決方法為統一所有的檔案編碼,可全部統一編碼後還是沒解決問題(攔截器編碼與一致),後在的action中加了一句response.setCharacterEncoding(“UTF-8”); 問題解決。

4、以前對jquery的非同步請求返回機制不太瞭解,在請求action後常用的為“return;“或”return null;”,也沒有太在意當action的返回success頁面時,jquery請求後是怎麼處理的,在專案中想要非同步請求,但又想讓它執行完成後跳轉到success頁面,在多方測試之後終於確定:jquery.ajax方法請求後對於action的跳轉是直接過濾掉了(此處描述是否準確?)。如此,只能在ajax請求後的成功或失敗方法中定義成功或失敗跳轉頁面。

相關文章