在同一個jsp下使用兩個不一樣的Ueditor時,第二次加載的Ueditor會失敗

場景:在一個父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

相關文章
相關標籤/搜索