在我的 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 来执行此操作,原因有很多,我们无法讨论。)
本质上,当用户单击按钮时,animate()
会调用一个 jQuery,当它完成时,回调函数会调用Window.onResize()
. 很简单。
它第一次起作用。当用户点击按钮时,动画发生,并且 onResize 被调用。但即使animate()
函数成功完成,所有后续点击都不会触发 onResize 操作。我在回调中放入的任何其他代码,例如alert()
,每次动画完成时都会发生,因此回调不是问题。我知道onResize()
随后不会调用 ,因为动画操作对元素的大小应用了一堆更改,并且当onResize()
触发时,您可以看到更改发生。
为什么Window.onResize()
唯一的第一次被调用,随后的调用被忽略?