場景:在一個父jsp頁面中,存在兩個模態框,在點擊新增xx時,新增的模態框中會放入一個jsp頁面,這張jsp頁面中帶有一個編輯器;同理,點擊修改xx時同樣。html
錯誤:每當我第一次點擊新增/修改時,編輯器能夠出現,但當我點擊修改/新增時便加載不出來。jsp
百度搜索後發現是這個緣由:編輯器
這段能夠看到,在調用UE.getEditor(‘_editor’)初始化UEditor時,先從放置編輯器的容器instances中獲取,沒有實例才實例化一個Editor,這就是引發問題的緣由。 在第一次跳轉到編輯器界面時,正常的實例化了一個新的編輯器對象,並放入instances,調用editor.render(id)渲染編輯器的DOM; 第二次初始化時卻僅從容器中取到實例:var editor = instances[id]; 直接返回了editor對象,而編輯器的DOM並無渲染。 方案: jQuery(function($) { UE.getEditor('_editor').render('_editor') }) 也能夠這樣: jQuery(function($) { UE.delEditor('_editor'); var ue = UE.getEditor('_editor'); })
可是我在打開新增或者修改對應的jsp中加上$(function() {上面的解決方案})後,發現並無生效。測試
解決方案:嘗試了一種新的思路,即在模態框關閉的時候調用UE.delEditor();測試事後生效,以下code
// 關閉Dialog前移除編輯器 $('#updateDetailModal').on('hidden.bs.modal', function () { UE.delEditor('editorUpdate'); }); $('#addDocModal').on('hidden.bs.modal', function () { UE.delEditor('editor'); });
可是又出現了一個新的js異常:Cannot read property 'scrollTo' of undefined,每當我初始化編輯器後,鼠標往上滾到頁面頂部時就會報這個,htm
下面是該異常的解決方案:對象
ueditor.all.js的以下內容加一個判斷get