最近在用UEditor编辑器,发现一个问题,我在A页面编辑好内容后,点击页面上的保存按钮,然后程序将数据提交到服务器端进行保存,在保存之前服务端需要对数据进行安全校验,如果不合格就会提示并返回到上一页面,那么,问题出现了,当服务器页面(视为B页面)对数据校验后不合格,返回上一页时,页面就回到A了,而这个时候才发现,A页面中的编辑器内容被清空掉了,貌似编辑器又重新初始化一次了,这样是肯定不行的,用户辛苦半天编辑的内容,最后全没了,很多人会说,那你客户端校验的时候就应该考虑这种情况,不合格就不要提交到服务器上去了,这样也是治标不治本的。
经过反复试验,最终通过以下方法解决了这个问题。
首页,编辑器容器,我用textarea来做,默认UE好像更偏向于script标签,当然了,用textarea也有不好的地方,如果你的内容中含有textarea标签时,那</textarea>后面的内容就被丢弃了,这也是本文解决办法中的不足。
好的,前面说了用textarea来做编辑器容器,如下:
<span class="gray14">商家介绍</span>
<textarea id="editor" name="content" style="width:99%;height:200px;"></textarea>
页面最后对编辑器进行实例化,不过,实例化时要加入autoSyncData:true参数,这个参数的代表“自动同步编辑器要提交的数据”,设置为true时,编辑器中的内容会与textarea进行同步,代码如下:
var ue = UE.getEditor('editor',{toolbars:[['fullscreen', 'source', 'undo', 'redo', 'removeformat']],autoSyncData:true});
这样一来,编辑器与表单同步了,而编辑器又是以这个表单为容器的,这样一来,就算是从B页面返回到A页面,也不怕内容丢失了。