您好同事GWT人。GWT FocusPanel clickHandler在使用元素創建時不起作用
在我使用GWT時,我遇到了FocusPanel未處理添加到它的clickEvent的問題。我不做GWT的標準方式,即使用UI綁定器或純Java代碼小部件構建GUI。我的主機GWT HTML文件是1個大文件,它具有表示內容「頁面」的div標記。我使用GWT來控制DOM。
我有這個HTML,我作爲FocusPanel的內容導入。
<div id="editCardsResponses">
<div id="editCardsSuccess" class="success-box clickable">
<span id="editCardsSuccessLabel">Your card was successfully deleted/edit/added.</span>
<span class="glyphicon glyphicon-remove"></span>
</div>
...
</div>
下面的代碼...
RootPanel editCardsSuccess = RootPanel.get("editCardsSuccess");
FocusPanel editCardsSuccessPanel = new FocusPanel(editCardsSuccess);
editCardsSuccessPanel.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
hideWidget(editCardsSuccessPanel);
}
});
這並沒有工作,直到我這樣做...
final HTMLPanel editCardsSuccess = view.getEditCardsSuccess();
editCardsSuccess.addDomHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
hideWidget(editCardsSuccess);
}
}, ClickEvent.getType());
我甚至嘗試添加FocusPanel父DIV,認爲FocusPanel沒有附加到DOM,但這也沒有奏效。
RootPanel.get("editCardsResponses").add(editCardsSuccessPanel);
我想用FocusPanel,如GWT要添加一個隱藏的輸入的DOM,在addtion給它包裝的元素。我假設隱藏的輸入處理一些跨瀏覽器問題,如果我只使用domHandler方法,可能會丟失。
任何人都可以幫助解釋爲什麼FocusPanel.ClickHandler不會生效,但附加的domHandler會?
如果DOM附件是問題,有沒有辦法重新附加被分離的元素/小部件?
如果我使用domHandler的方式......通過沒有獲取GWT FocusPanel小部件提供的隱藏輸入,我會失去什麼兼容性?
啊很高興知道。我再讀一遍,發現添加的輸入是關鍵訪問:https://gwt.googlesource.com/gwt/+/master/user/src/com/google/gwt/user/client/ui/impl/ FocusImplStandard.java我的用例並不需要它,所以我現在堅持使用addDomHandler。乾杯! – jason