Extjs[ver<=3.1.0] enter键发送跨浏览器解决 等相关问题

聊天程序,enter键要发送同时清空编辑区:
Extjs textarea,
发现发送了后清空文本框后还是有个回车:
在chat里面的原因是截获事件后没有取消事件冒泡,导致先清空文本,最后残留的回车应该是事件冒泡产生的。
在ie里面设置event.keyCode = 8;[退格]即可
在火狐里面使用Ext包装的eventObject.preventDefault即可

==============================================
一下直接看源码可以分析出:
Ext panel要让它可拖动,可用draggable属性,但是如果没有设置panel的floating=true,则拖动后结束后还是会归原,可将 panel样式设置position:absolute即可.[这是wcsa里面出现的情况],另一种是没有header(没有设置title),
见下注释:

extDialog = new Ext.Panel({
style : 'z-index:' + (Ext.WindowMgr.zseed - 20),
width : 760,
height : 532,
layout : 'border',
tbar : _tbar,//toolbar作为伪header,没有设置header
floating : true,//
renderTo : Ext.getBody(),
x : x,
y : y,
items : [_rightpnl, chatpanel, southpnl]
});

extDialog.on('show', function() {//由于要取toolbar的el属性,故在render之后才可以
extDialog.dd = new Ext.Panel.DD(extDialog, {//draggleble是普通的配置文档上的copy
insertProxy : false,

onDrag : function(e) {
var pel = this.proxy.getEl();
this.x = pel.getLeft(true);
this.y = pel.getTop(true);
},

endDrag : function(e) {
this.panel.setPosition(this.x, this.y);
}
});
extDialog.body.setStyle('cursor', '');//由于没有header,将body的cursor设置为了move,所以还原
_tbar.el.setStyle('cursor', 'move');//设置toolbar的cursor为move
extDialog.dd.setHandleElId(_tbar.el.dom.id);//这个是必要的,chat里面遇到的问题是利民的textarea得不到焦点(鼠标点击没反应),就是因为默认DD没有header,将整个body设置成了handler
});

这个解决方案在ie6下有问题,整个Extjs层无法点击,最后还是改用window来做就没问题。

=======================
chat里面遇到,右侧要写html dialog,发现火狐下再展开原来collapse的panel会导致原来写好的iframe 里面的html是空的,跟踪dom发现这个收缩的panel整个被remove了,再展开时extjs试图还原,对一般的这个没问题,对
嵌入iframe则有问题,查看源码估计是展开收缩动画造成的原因,将Panel animCollapse的设置为false就可以了.

floatable:false,则可以让折叠的panel必须要点按钮才可以展开[borderlayout.region]

extjs3.1.0之前

Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1