問(wèn)題:
人員信息打開(kāi)印机,其中簡(jiǎn)歷匀奏,首次打開(kāi)樣式加載鞭衩,超出長(zhǎng)度可下拉,但是關(guān)閉后再次打開(kāi)發(fā)現(xiàn)樣式不加載娃善,無(wú)法下拉查看多余部分论衍。
分析:
查看ueditor.all.js(在頁(yè)面引入的js),發(fā)現(xiàn)以下代碼
/**
* @file
* @name UE
* @short UE
* @desc UEditor的頂部命名空間
*/
/**
* @name getEditor
* @since 1.2.4+
* @grammar UE.getEditor(id,[opt]) => Editor實(shí)例
* @desc 提供一個(gè)全局的方法得到編輯器實(shí)例
*
* * ''id'' 放置編輯器的容器id, 如果容器下的編輯器已經(jīng)存在,就直接返回
* * ''opt'' 編輯器的可選參數(shù)
* @example
* UE.getEditor('containerId',{onready:function(){//創(chuàng)建一個(gè)編輯器實(shí)例
* this.setContent('hello')
* }});
* UE.getEditor('containerId'); //返回剛創(chuàng)建的實(shí)例
*
*/
UE.getEditor = function (id, opt) {
var editor = instances[id];
if (!editor) {
editor = instances[id] = new UE.ui.Editor(opt);
editor.render(id);
}
return editor;
};
UE.delEditor = function (id) {
var editor;
if (editor = instances[id]) {
editor.key && editor.destroy();
delete instances[id]
}
};
UE.registerUI = function(uiName,fn,index,editorId){
utils.each(uiName.split(/\s+/), function (name) {
UE._customizeUI[name] = {
id : editorId,
execFn:fn,
index:index
};
})
}
})();
在調(diào)用UE.getEditor(‘editor’)初始化UEditor時(shí)聚磺,先從放置編輯器的容器instances中獲取坯台,沒(méi)有實(shí)例才實(shí)例化一個(gè)Editor,這就是引起問(wèn)題的原因瘫寝。
- 在第一次跳轉(zhuǎn)到編輯器界面時(shí)蜒蕾,正常的實(shí)例化了一個(gè)新的編輯器對(duì)象稠炬,并放入instances,調(diào)用editor.render(id)渲染編輯器的DOM咪啡;
- 第二次初始化時(shí)卻僅從容器中取到實(shí)例:var editor = instances[id]; 直接返回了editor對(duì)象首启,而編輯器的DOM并沒(méi)有渲染。
具體解決:
原代碼
<!-- 編輯器容器 -->
<td class="height-320" colspan="6" style="height: 150px;">
<div class="height-320" style="width: 100%; overflow: auto auto;">
<script id="editor" type="text/plain"
style="width: 100%; visibility: hidden; height: 100%;"></script>
</div>
</td>
<!-- js代碼 -->
//建議使用工廠(chǎng)方法getEditor創(chuàng)建和引用編輯器實(shí)例撤摸,如果在某個(gè)閉包下引用該編輯器闽坡,直接調(diào)用UE.getEditor('editor')就能拿到相關(guān)的實(shí)例
var ue = UE.getEditor('editor');
Ext.onReady(function(){
ue.ready(function () {
//根據(jù)信息項(xiàng)權(quán)限組控制,判斷簡(jiǎn)歷是否可用
if(fieldsDisabled.indexOf("a1701") != -1){
ue.setDisabled();
Ext.getCmp('qx').setDisabled(true);
Ext.getCmp('qx2').setDisabled(true);
}
setContent();
genResume();
});
});
按照網(wǎng)上的方式添加如下代碼:
$(function(){
UE.getEditor('editor').render('editor');
})
或者修改如下
$(function(){
UE.delEditor('editor');
var ue = UE.getEditor('editor');
})
但是發(fā)現(xiàn)都無(wú)效愁溜,經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)點(diǎn)擊上一人外厂,下一人時(shí)冕象,樣式?jīng)]有問(wèn)題,而上一人下一人只調(diào)用了setContent()和genResume()汁蝶。所以采用延遲內(nèi)容加載來(lái)解決問(wèn)題渐扮。代碼如下:
//建議使用工廠(chǎng)方法getEditor創(chuàng)建和引用編輯器實(shí)例,如果在某個(gè)閉包下引用該編輯器掖棉,直接調(diào)用UE.getEditor('editor')就能拿到相關(guān)的實(shí)例
var ue = UE.getEditor('editor');
ue.addListener('blur',function(a,b,c){
document.getElementById("a1701").value = ue.getPlainTxt().trim();
});
ue.addListener('beforepaste', myEditor_paste);
function myEditor_paste(o, html) {//alert();
}
Ext.onReady(function(){
ue.ready(function () {
//根據(jù)信息項(xiàng)權(quán)限組控制墓律,判斷簡(jiǎn)歷是否可用
if(fieldsDisabled.indexOf("a1701") != -1){
ue.setDisabled();
Ext.getCmp('qx').setDisabled(true);
Ext.getCmp('qx2').setDisabled(true);
}
});
var fff;
clearTimeout(fff);
fff = setTimeout(function() {
setContent();
genResume();
}, 300);
});