2012-01-20 59 views
5

我想知道,在GWT中,哪個元素當前有重點。基本上我在我們的應用程序中使用虛擬鍵盤。所有的鍵都可以正常工作,除了Tab鍵。如果我得到專注的元素,那麼我可以制定出標籤密鑰代碼。如何找出哪個GWT元素具有焦點?

在JavaScript和jQuery中,我們可以使用document.activeElement得到這個。希望有些機構會讓我以正確的方式來實現這一目標。

幫助,將不勝感激。

回答

1

document.activeElement在所有瀏覽器中都不起作用,所以GWT中不支持它。你也許可以使用焦點&模糊處理程序來跟蹤哪個元素具有它。

+0

ok.Thanks您reply.If您有任何樣品,你可以分享focushandlers得到有源元件? – Unknown

+0

不幸的是不是 – milan

+0

哦,但如果你找到任何解決方案,請與我們分享。我們也將嘗試一個最大限度地找出解決方案在更短的時間:-)。感謝您的指導。 – Unknown

6

在「所有瀏覽器」中不受支持的事實僅在您的應用針對所有瀏覽器時才重要。 activeElement目前支持不少瀏覽器Why is there no isFocused() in GWT?

我需要類似的東西,我需要從小部件內部知道它是否有焦點。我做了以下

protected native boolean hasFocus(Element element) /*-{ 
    return element.ownerDocument.activeElement == element; 
}-*/; 

我需要在當前的元素傳遞給獲得正確的文件,只是打電話

document.activeElement; 

沒有給我我所需要的文檔。你可能會做同樣的事情,但傳入一個不同的元素(RootPanel元素也許?),並返回焦點元素,而不是一個布爾。

protected native Element elementInFocus(Element element) /*-{ 
    return element.ownerDocument.activeElement; 
}-*/; 
+3

您應該在JSNI中使用「$ doc」而不是「document」。 $ wnd代替「window」也一樣。 –

0

短模板:

public class IntBox extends com.google.gwt.user.client.ui.IntegerBox { 

private boolean focused=false; 

public IntBox(){ 

     addFocusHandler(new FocusHandler() { 

      @Override 
      public void onFocus(FocusEvent event) { 
       focused=true; 
      } 
     }); 

     addBlurHandler(new BlurHandler() { 

      @Override 
      public void onBlur(BlurEvent event) { 
       focused=false; 
      } 
     }); 

    } 

    public boolean isFocused() { 
     return focused; 
    } 

} 
相關問題