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