我有主类(比如StockWatcher
)调用 JSNI 来在页面加载时在正文中定义一个 jQuery UI 对话框。该对话框在JSNI
函数内调用。上onModuleLoad
,我做类似的事情prepareUI();
。prepareUI
JSNI 运行如下:
public void native prepareUI() /*-{
$wnd.jQuery($doc).ready(function($) {
message = "<div id = 'message'>Don't do this...</div>
$(message).appendTo("body");
$( "#message" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
},
close:function() { this.@com.google.gwt.sample.stockwatcher.client.StockWatcher::doit()(); },
autoOpen: true,
show: {
effect: "puff",
duration: 500
},
hide: {
effect: "explode",
duration: 500
}
});
});
}-*/;
接下来是doit()
函数,很简单:
public void doit() {
Window.alert("Foo");
}
但是,在页面加载时,即使对话框正确显示,甚至在单击Ok
按钮时正确关闭,警报也不会弹出(控制台中未显示错误)。谁能告诉我如何解决这个问题?完成此操作的类在StockWatcher
包中com.google.gwt.sample.stockwatcher.client
(想象一下默认的 GWTStockWatcher
包层次结构)。