2012-02-04 27 views
0

我想知道是否有一種有效的方式來檢測浮動窗口是否失去焦點。我有一個用戶臨時輸入的浮動窗口,如果用戶在輸入操作後忘記隱藏它(例如,在其他地方點擊),我想要做的就是自動隱藏此窗口。我試圖在窗口元素上使用模糊事件,但沒有發生任何事情。 一個工作演示:demoExtJS浮動窗口焦點丟失檢測

感謝您的任何想法!

回答

0

在您可以檢測窗口是否已經模糊不清之前,首先需要採取一些措施來模糊窗口。你提到,如果用戶「在其他地方點擊」,你會想要一個窗口模糊;你可以通過添加一個監聽到你的mainPanel做到這一點:

var mainPanel = new Ext.Panel({ //define a main non-floating panel 
    title: 'main', 
    id: 'mainPanel', 
    width: 400, 
    height: 400, 
    listeners: { 
     afterrender: function(self) { 
      self.body.on('click', function() { 
       alert('clicked') 
      }); 
     } 
    } 

}); 

一旦面板主體已被點擊,您可以模糊floatWin這樣的事件被監聽實際火災。

+0

感謝您的回覆。不過,它僅適用於mainPanel中的屍體。在我的真實應用程序中,還有其他幾個容器,包括其他一些容器,我認爲爲每個容器註冊'點擊'事件並不是一個好主意。 – Simon 2012-02-06 18:33:30

4

這是可以實現添加模糊事件分機窗口元素,下面是示例代碼

Ext.applyIf(me, { 
     items: [ 
      { 
       xtype: 'button', 
       text: 'Done', 
       listeners: { 
        click: { 
         fn: me.onDoneButtonClick, 
         scope: me 
        } 
       } 
      } 
     ], 
     listeners: { 
      el: { 
       blur: { 
        fn: me.onWindowLoseFocus, 
        scope:me 
       } 
      }    
     } 
    });