Ext.Window显示座标的问题(已解决)

系统环境:
主页的排板为: 左侧是系统功能树, 右侧以Tab的形式显示各个功能页面.

现用Ext.Window做了一个统一的选择人员窗口. 在普通的JSF页面上引用. 为了节约系统资源,
重写window的close()方法, 将其隐藏.

即: 用户每次在调用此Window的时候, 先判断当前Window是否已实例化(把window定义成一个全局变量进行引用), 如果未实例化时,才new window()出来, 如果已实例化过, 直接调用window.show().

问题的产生:
1.因为左侧显示系统具体功能的是Iframe, 随着各功能页面内容的不同, 很可能会出现滚动条.

2.当出现滚动后, 例如页面刚加载进来,有一个连接是调用此window的, 在滚动条滚动后, 在页面的下方还有一处也调用了此window.

3.因为第一次点击时,已实例了此window, 这时, window的显示座标已确定下来. 当滑动滚动条,点击第二个选择人员功能时, window还是会显示在第一次实例化时, 所计算出来的position. (如果每次window都是new出来的话,不会存在此问题. 此时必须重新设定其position才行.)

解决方案:
1.发现Ext.Window中有一个方法 syncSize(), 具体说明如下:
[quote]
syncSize() : Ext.BoxComponent
Force the component's size to recalculate based on the underlying element's current height and width.
Force the component's size to recalculate based on the underlying element's current height and width.
Parameters:

* None.

Returns:

* Ext.BoxComponent
this
[/quote]
尝试在window.show()之前调用此方法, 但却报错. (this.el 为空). 由于时间关系,没有继续研究如何解决.

2.其实之前最先想到的方法是 setPosition(), 但由于参数没有确定下来,所以才想尝试syncSize(). 没办法, 继续研究setPosition()方法的参数. 经测试:
[quote]
document.body....出来的参数,都没有达到预期效果.
最后使用:window.innerwidth 和 window.innerHeight 解决了.
[/quote]

最终代码如下:

if(!_orgWin)
_orgWin = new OrganizationWindow();
_orgWin.setPosition(window.innerwidth, window.innerHeight);
_orgWin.show();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值