私の GWT アプリケーションには、JSNI と jQuery を介してクリック ハンドラーをアタッチしたボタンがあります。JSNI は次のようになります。
private native void attachClickActions() /*-{
$wnd.jQuery("#theButton").click(function() {
// ...
$wnd.jQuery(this).animate({
// ...
}, 500, function() {
@com.google.gwt.user.client.Window::onResize()();
});
});
}-*;
(いいえ、Java コードの ClickHandler を介してこれを行うことはできません。さまざまな理由がありますが、これは議論の対象ではありません。)
基本的に、ユーザーがボタンをクリックすると jQueryanimate()
が呼び出され、終了するとコールバック関数が を呼び出しますWindow.onResize()
。ものすごく単純。
そして、それは初めて機能します。ユーザーがボタンをクリックすると、アニメーションが発生し、onResize が呼び出されます。ただし、animate()
関数が正常に完了しても、後続のすべてのクリックで onResize アクションが起動されるわけではありません。など、コールバックに追加した他のコードはalert()
、アニメーションが完了するたびに発生するため、コールバックの問題ではありません。onResize()
アニメーションアクションが要素のサイズに一連の変更を適用し、onResize()
がトリガーされると、変更が発生することがわかるため、 がその後呼び出されないことはわかっています。
Window.onResize()
最初にのみが呼び出され、その後の呼び出しが無視されるのはなぜですか?