Extjs 右下角彈出框 可彈出多個 冒泡小窗體

 Extjs 右下角彈出框 可彈出多個 冒泡小窗體

TipsWindow對象聲明

 

  1. Ext.ns('Ext.ux');
  2. /**
  3. * 右下角的小貼士窗口
  4. * @author tipx.javaeye.com
  5. * @params conf 參考Ext.Window
  6. * conf中添加autoHide配置項, 默認3秒自動隱藏, 設置自動隱藏的時間(單位:秒), 不需要自動隱藏時設置爲false
  7. * @注: 使用獨立的window管理組(manager:new Ext.WindowGroup()), 達到總是顯示在最前的效果
  8. */
  9. ; (function($)
  10. {
  11. //新建window組,避免被其它window影響顯示在最前的效果
  12. var tipsGroupMgr = new Ext.WindowGroup();
  13. tipsGroupMgr.zseed = 99999; //將小貼士窗口前置
  14. $.TipsWindow = Ext.extend(Ext.Window,
  15. {
  16. width: 500,
  17. height: 150,
  18. layout: 'fit',
  19. modal: false,
  20. plain: true,
  21. shadow: false,
  22. //去除陰影
  23. draggable: false,
  24. //默認不可拖拽
  25. resizable: false,
  26. closable: true,
  27. closeAction: 'hide',
  28. //默認關閉爲隱藏
  29. autoHide: 3,
  30. count:1,//設置顯示的是第幾個tipwindow
  31. //n秒後自動隱藏,爲false時,不自動隱藏
  32. manager: tipsGroupMgr,
  33. //設置window所屬的組
  34. constructor: function(conf)
  35. {
  36. $.TipsWindow.superclass.constructor.call(this, conf);
  37. this.initPosition(true);
  38. },
  39. initEvents: function()
  40. {
  41. $.TipsWindow.superclass.initEvents.call(this);
  42. //自動隱藏
  43. if (false !== this.autoHide)
  44. {
  45. var task = new Ext.util.DelayedTask(this.hide, this),
  46. second = (parseInt(this.autoHide) || 3) * 1000;
  47. this.on('beforeshow',
  48. function(self)
  49. {
  50. task.delay(second);
  51. });
  52. }
  53. this.on('beforeshow', this.showTips);
  54. this.on('beforehide', this.hideTips);
  55. Ext.EventManager.onWindowResize(this.initPosition, this); //window大小改變時,重新設置座標
  56. Ext.EventManager.on(window, 'scroll', this.initPosition, this); //window移動滾動條時,重新設置座標
  57. },
  58. //參數: flag - true時強制更新位置
  59. initPosition: function(flag)
  60. {
  61. if (true !== flag && this.hidden)
  62. { //不可見時,不調整座標
  63. return false;
  64. }
  65. var doc = document,
  66. bd = (doc.body || doc.documentElement);
  67. //ext取可視範圍寬高(與上面方法取的值相同), 加上滾動座標
  68. var left = bd.scrollLeft + Ext.lib.Dom.getViewWidth() - 4 - this.width;
  69. var top = bd.scrollTop + Ext.lib.Dom.getViewHeight() - 4 - this.height*this.count;
  70. this.setPosition(left, top);
  71. },
  72. showTips: function()
  73. {
  74. var self = this;
  75. if (!self.hidden)
  76. {
  77. return false;
  78. }
  79. self.initPosition(true); //初始化座標
  80. self.el.slideIn('b',
  81. {
  82. callback: function()
  83. {
  84. //顯示完成後,手動觸發show事件,並將hidden屬性設置false,否則將不能觸發hide事件
  85. self.fireEvent('show', self);
  86. self.hidden = false;
  87. }
  88. });
  89. return false; //不執行默認的show
  90. },
  91. hideTips: function()
  92. {
  93. var self = this;
  94. if (self.hidden)
  95. {
  96. return false;
  97. }
  98. self.el.slideOut('b',
  99. {
  100. callback: function()
  101. {
  102. //漸隱動作執行完成時,手動觸發hide事件,並將hidden屬性設置true
  103. self.fireEvent('hide', self);
  104. self.hidden = true;
  105. }
  106. });
  107. return false; //不執行默認的hide
  108. }
  109. });
  110. })(Ext.ux);

 

調用方法

 

  1. var abc=0,
  2. tipw=[];
  3. 加一個方法調用彈出
  4. abcd = functon(){
  5. tipw[abc] = new Ext.ux.TipsWindow(
  6. {
  7. title: "小貼士<a href="#" mce_href="#">電視發射塔</a>",
  8. autoHide: 5,
  9. count:abc+1,//設置彈出的是第幾個
  10. //5秒自動關閉
  11. html: "這是提示"
  12. });
  13. tipw[abc].show();
  14. }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章