在使用extjs3.0的MessageBox时,碰到自适应宽度的问题,
案件重现:
1.先提示内容较长的信息
Ext.Msg.alert('内容比较长长长长长长长长长!');
[img]http://dl.iteye.com/upload/attachment/233949/d76f0d08-3394-346d-810b-a7eb2156030b.jpg[/img]
2.再提示内容较短的信息
Ext.Msg.alert('内容有点短啊!');
[img]http://dl.iteye.com/upload/attachment/233951/7b9ae1f1-7769-314f-9c0d-481ed90fe032.jpg[/img]
3.再次提示内容较长的信息(信息长度至少比第2点的内容长时,出现换行)
Ext.Msg.alert('内容比第2点长就可以了!');
[img]http://dl.iteye.com/upload/attachment/233953/5f5da9dc-03bc-371e-942e-5730304175ca.jpg[/img]
4.再次提示第1点的较长内容看看(跟第3一样出现换行)
[img]http://dl.iteye.com/upload/attachment/233955/b092868e-6f96-37ec-96e2-0247d50c3934.jpg[/img]
按顺序从1-3弹出,其中第1和第2个msgbox窗口宽度都能够自适应,第3个和第4个msgbox的宽度却没有自适应文字宽度,而是出现文字换行。
网上的解决方法不多,1种为重新设置宽度,1种为修改源码,这两种都不适合我,最后自己对着api一个个遍历猜测,最终得下面的土方法:
由于阅读源码对于我实在难度过大,所以只能以此土方法治标;
如果有更好的方法,欢迎留言给我
案件重现:
1.先提示内容较长的信息
Ext.Msg.alert('内容比较长长长长长长长长长!');
[img]http://dl.iteye.com/upload/attachment/233949/d76f0d08-3394-346d-810b-a7eb2156030b.jpg[/img]
2.再提示内容较短的信息
Ext.Msg.alert('内容有点短啊!');
[img]http://dl.iteye.com/upload/attachment/233951/7b9ae1f1-7769-314f-9c0d-481ed90fe032.jpg[/img]
3.再次提示内容较长的信息(信息长度至少比第2点的内容长时,出现换行)
Ext.Msg.alert('内容比第2点长就可以了!');
[img]http://dl.iteye.com/upload/attachment/233953/5f5da9dc-03bc-371e-942e-5730304175ca.jpg[/img]
4.再次提示第1点的较长内容看看(跟第3一样出现换行)
[img]http://dl.iteye.com/upload/attachment/233955/b092868e-6f96-37ec-96e2-0247d50c3934.jpg[/img]
按顺序从1-3弹出,其中第1和第2个msgbox窗口宽度都能够自适应,第3个和第4个msgbox的宽度却没有自适应文字宽度,而是出现文字换行。
网上的解决方法不多,1种为重新设置宽度,1种为修改源码,这两种都不适合我,最后自己对着api一个个遍历猜测,最终得下面的土方法:
Ext.onReady(function(){
var fixSpace = []; //用200个不换行的空格填充,撑宽宽度
for(var i=0; i<20; i++){
fixSpace.push(" ");
}
//取出msgbox的window,并在隐藏时,重新设置相当长的一段内容
//(这内容用其它能占位的字符代替也可以)
//因为Ext.Msg是单例对象,所以只要在onReady时加入下面的代码即可达到全局设置的效果
Ext.Msg.getDialog().on("hide", function(self){
Ext.Msg.updateText(fixSpace.join(""));
});
});
由于阅读源码对于我实在难度过大,所以只能以此土方法治标;
如果有更好的方法,欢迎留言给我