1

私は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しかし、そこからどこへ行くのですか? ここに画像の説明を入力

4

2 に答える 2