最近在用UEditor編輯器,發(fā)現(xiàn)一個問題,我在A頁面編輯好內(nèi)容后,點擊頁面上的保存按鈕,然后程序將數(shù)據(jù)提交到服務器端進行保存,在保存之前服務端需要對數(shù)據(jù)進行安全校驗,如果不合格就會提示并返回到上一頁面,那么,問題出現(xiàn)了,當服務器頁面(視為B頁面)對數(shù)據(jù)校驗后不合格,返回上一頁時,頁面就回到A了,而這個時候才發(fā)現(xiàn),A頁面中的編輯器內(nèi)容被清空掉了,貌似編輯器又重新初始化一次了,這樣是肯定不行的,用戶辛苦半天編輯的內(nèi)容,最后全沒了,很多人會說,那你客戶端校驗的時候就應該考慮這種情況,不合格就不要提交到服務器上去了,這樣也是治標不治本的。
經(jīng)過反復試驗,最終通過以下方法解決了這個問題。
首頁,編輯器容器,我用textarea來做,默認UE好像更偏向于script標簽,當然了,用textarea也有不好的地方,如果你的內(nèi)容中含有textarea標簽時,那</textarea>后面的內(nèi)容就被丟棄了,這也是本文解決辦法中的不足。
好的,前面說了用textarea來做編輯器容器,如下:
<span class="gray14">商家介紹</span>
<textarea id="editor" name="content" style="width:99%;height:200px;"></textarea>
頁面最后對編輯器進行實例化,不過,實例化時要加入autoSyncData:true參數(shù),這個參數(shù)的代表“自動同步編輯器要提交的數(shù)據(jù)”,設置為true時,編輯器中的內(nèi)容會與textarea進行同步,代碼如下:
var ue = UE.getEditor('editor',{toolbars:[['fullscreen', 'source', 'undo', 'redo', 'removeformat']],autoSyncData:true});
這樣一來,編輯器與表單同步了,而編輯器又是以這個表單為容器的,這樣一來,就算是從B頁面返回到A頁面,也不怕內(nèi)容丟失了。