投放本站广告请联系:
extjscn#126.com
解决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: { close:function(w){ //关键部分:关闭窗口前先还原,滚动条才不会消失 w.restore(); }, maximize:function(w){ //关键部分:最大化后需要将窗口重新定位,否则窗口会从最顶端开始最大化 w.setPosition(document.body.scrollLeft,document.body.scrollTop); } }
演示(demo)地址在文章最后.
效果图如下:
源代码包括:0007_window_position.html
0007_window_position.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>解决Ext.Window放大关闭后滚动条消失和滚动页面时最大化Window位置的方法</title> <link rel="stylesheet" type="text/css" href="../resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="../examples/examples.css" /> <script type="text/javascript" src="../adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../ext-all.js"></script> <script type="text/javascript"> /* * Copyright(c) extjs.org.cn | jamblues * Power by Jamblues & Micheal * * http://extjs.org.cn */ Ext.BLANK_IMAGE_URL = "../../resources/images/default/s.gif"; var tr_1 = ""; var class_1 = ""; function OpenWin(tr) { //设置选中颜色开始 if(tr_1 != "") { tr_1.style.backgroundColor = ""; } tr_1 = tr; class_1 = tr.className; tr.style.backgroundColor = "#AECEF6"; //设置选中颜色结束 Ext.onReady(function(){ var win = new Ext.Window({ layout:'fit', width:480, height:360, resizable:true, closeAction:'close', plain: true, maximizable: true, listeners: { close:function(w){ //关键部分:关闭窗口前先还原,滚动条才不会消失 w.restore(); }, maximize:function(w){ //关键部分:最大化后需要将窗口重新定位,否则窗口会从最顶端开始最大化 w.setPosition(document.body.scrollLeft,document.body.scrollTop); } } }); win.show(); }); } </script> </head> <body> <h1>解决Ext.Window放大关闭后滚动条消失和滚动页面时最大化Window位置的方法</h1> <p>应用场景:一个表格列表,点击表格上的某一行,弹出一个Ext.Window显示其他资料。(修改、显示详情等等) <br />很多情况下我们只是使用Ext的某一些功能,如Ext.Window.在你的页面长度没有越过一页,即没有滚动条的时候,使用Ext.Window是不会有任何问题的。但当你的页面长度超过一页,有滚动条时,使用Ext.Window会出现以下两个问题: <br /> 1、Ext.Window放大后,再点击关闭按钮,页面右边的滚动条会消失,出现一条白边,页面不能滚动了。如下图: <br /> 2、向下拖动页面至某一个地方,弹出一个Ext.Window,这个时候如果点击放大,窗体会放大,但位置在最顶上,这时候你什么也不能操作,只能重新刷新页面。 <br> <div id="data-gird"> *双击行弹出新窗口 <table width="100%" border="1" cellpadding="0" cellspacing="5"> <tr> <th scope="col" style="text-align:center; font-weight:bold;">Company</th> <th scope="col" style="text-align:center; font-weight:bold;">Price</th> <th scope="col" style="text-align:center; font-weight:bold;">Change</th> <th scope="col" style="text-align:center; font-weight:bold;">% Change</th> <th scope="col" style="text-align:center; font-weight:bold;">Last Updated</th> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>3m Co</td> <td>71.72</td> <td>0.02</td> <td>0.03</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Alcoa Inc</td> <td>29.01</td> <td>0.42</td> <td>1.47</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Altria Group Inc</td> <td>83.81</td> <td>0.28</td> <td>0.34</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>American Express Company</td> <td>52.55</td> <td>0.01</td> <td>0.02</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>American International Group, Inc.</td> <td>64.13</td> <td>0.31</td> <td>0.49</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>AT&T Inc.</td> <td>31.61</td> <td>-0.48</td> <td>-1.54</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Boeing Co.</td> <td>75.43</td> <td>0.53</td> <td>0.71</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Caterpillar Inc.</td> <td>67.27</td> <td>0.92</td> <td>1.39</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Citigroup, Inc.</td> <td>49.37</td> <td>0.02</td> <td>0.04</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>E.I. du Pont de Nemours and Company</td> <td>40.48</td> <td>0.51</td> <td>1.28</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Exxon Mobil Corp</td> <td>68.1</td> <td>-0.43</td> <td>-0.64</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>General Electric Company</td> <td>34.14</td> <td>-0.08</td> <td>-0.23</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>General Motors Corporation</td> <td>30.27</td> <td>1.09</td> <td>3.74</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Hewlett-Packard Co.</td> <td>36.53</td> <td>-0.03</td> <td>-0.08</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Honeywell Intl Inc</td> <td>38.77</td> <td>0.05</td> <td>0.13</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Intel Corporation</td> <td>19.88</td> <td>0.31</td> <td>1.58</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>International Business Machines</td> <td>81.41</td> <td>0.44</td> <td>0.54</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Johnson & Johnson</td> <td>64.72</td> <td>0.06</td> <td>0.09</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>JP Morgan & Chase & Co</td> <td>45.73</td> <td>0.07</td> <td>0.15</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>McDonald's Corporation</td> <td>36.76</td> <td>0.86</td> <td>2.4</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Merck & Co., Inc.</td> <td>40.96</td> <td>0.41</td> <td>1.01</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Microsoft Corporation</td> <td>25.84</td> <td>0.14</td> <td>0.54</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Pfizer Inc</td> <td>27.96</td> <td>0.4</td> <td>1.45</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>The Coca-Cola Company</td> <td>45.07</td> <td>0.26</td> <td>0.58</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>The Home Depot, Inc.</td> <td>34.64</td> <td>0.35</td> <td>1.02</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>The Procter & Gamble Company</td> <td>61.91</td> <td>0.01</td> <td>0.02</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>United Technologies Corporation</td> <td>63.26</td> <td>0.55</td> <td>0.88</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Verizon Communications</td> <td>35.57</td> <td>0.39</td> <td>1.11</td> <td>9/1 12:00am</td> </tr> <tr style='cursor:pointer;' ondblclick='OpenWin(this);'> <td>Wal-Mart Stores, Inc.</td> <td>45.45</td> <td>0.73</td> <td>1.63</td> <td>9/1 12:00am</td> </tr> </table> </div> <br /> </body> </html>
演示(demo)地址:
有错误的地址:
http://extjs.org.cn/extjs/mydemo/0007_window_position_error.html
正确的地址:
http://extjs.org.cn/extjs/mydemo/0007_window_position.html
(版权声明:本篇文章版权属于extjs.org.cn所有,可以在互联网上进行转载,转载必须保留作者版权声明及链接;也可以文章用于出版、发行或其它商业用途,仅仅需要保留作者版权声明及链接。)
- 关键字:
- 要发表评论,请先登录