私はGWT 2.4アプリを持っています.GWT 2.4アプリでは、あるComposite
ウィジェットRootPanel
を別のウィジェットに切り替えて「ビューを交換」しています.通常のウィジェットを使用して、それぞれ削除と追加を行いますRootPanel.get().clear()
.RootPanel.get().add(newWidget)
最初の複合ウィジェットにはPasswordTextBox
. スワップをトリガーする Enter キーの押下をリッスンします。あまりにも派手なことはありません:
getDisplay().getPasswordBoxForKeyPresses().addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
swapWidgets(); // clear RootPanel and add new widget
}
}
});
問題は、DOM メモリ リークがあることです。RootPanel.get().clear()
が呼び出された後、古い複合ウィジェットが切り離された DOM ツリーにスタックしHTMLInputElement
ますPasswordTextBox
。
更新:
私は以下の役立つアドバイスを取り、style=detailed でコンパイルし、ツリーを下って JS の要素への参照を探し始めました。私は GWT にかなり慣れていないので、何が起こっているのかまだわかりません。したがって、保持ツリーの 2 行目から開始すると、ツリーの上部にリストされているlastEvent
が_2
含まれていることがわかります。nativeKeyTarget
しかし、そこからどこへ行くのですか?