解决Ext.Window放大关闭后滚动条消失和滚动页面时最大化Window位置的方法

解决Ext.Window放大关闭后滚动条消失和滚动页面时最大化Window位置的方法

应用场景:
一个表格列表,点击表格上的某一行,弹出一个Ext.Window显示其他资料。(修改、显示详情等等),如下图:

很多情况下我们只是使用Ext的某一些功能,如Ext.Window.在你的页面长度没有越过一页,即没有滚动条的时候,使用Ext.Window是不会有任何问题的。但当你的页面长度超过一页,有滚动条时,使用Ext.Window会出现以下两个问题:
你可以试用一下: http://extjs.org.cn/extjs/mydemo/0007_window_position_error.html

1、Ext.Window放大后,再点击关闭按钮,页面右边的滚动条会消失,出现一条白边,页面不能滚动了。如下图:

2、向下拖动页面至某一个地方,弹出一个Ext.Window,这个时候如果点击放大,窗体会放大,但位置在最顶上,这时候你什么也不能操作,只能重新刷新页面。如下图

解决办法其实很简单,只要在Window中添加两个listeners就可以了。

listeners: {   
  1.     close:function(w){   
  2.         //关键部分:关闭窗口前先还原,滚动条才不会消失   
  3.         w.restore();   
  4.     },   
  5.     maximize:function(w){      
  6.         //关键部分:最大化后需要将窗口重新定位,否则窗口会从最顶端开始最大化                          
  7.         w.setPosition(document.body.scrollLeft,document.body.scrollTop);   
  8.     }   
  9. }  
posted @ 2012-06-26 10:14  holyes  阅读(518)  评论(0编辑  收藏  举报