在GWT中注册Javascript方法不起作用
在GWT中注册Javascript方法不起作用,java,javascript,gwt,applet,jsni,Java,Javascript,Gwt,Applet,Jsni,我正在尝试在GWT中注册一个javascript方法,稍后java小程序可以调用该方法。当我从applet调用javascript警报函数时,它正在按预期工作。然而,当我尝试调用我的方法时,我收到“没有这样的方法”…“在JavaScript对象上” 小程序代码: public class MyApplet extends JApplet { JSObject window; public void init() { window = JSObject.getW
我正在尝试在GWT中注册一个javascript方法,稍后java小程序可以调用该方法。当我从applet调用javascript警报函数时,它正在按预期工作。然而,当我尝试调用我的方法时,我收到“没有这样的方法”…“在JavaScript对象上”
小程序代码:
public class MyApplet extends JApplet {
JSObject window;
public void init() {
window = JSObject.getWindow(this);
...
}
public void sendMessageToGwt(String message) {
window.call("sendMessageToGwt", new Object[] { message });
}
}
GWT类别:public class AppletWrapper {
public AppletWrapper() {
registerMethodsForApplet();
}
public native void registerMethodsForApplet() /*-{
var tmp=function(message){
alert(message);
};
$wnd.sendMessageToGwt=tmp;
}-*/;
}
您是否可以在不创建
tmp
变量的情况下重试,例如$wnd.sendMessageToGwt=function(message){alert(message);}
MyApplet#sendmagestogwt
必须在调用AppletWrapper#registerMethodsForApplet
后调用,我已经尝试过,但没有创建tmp
变量-效果相同。在调用该方法之前,我还确保该方法已注册。它是否在iframe
中运行?尝试Windows的父级。我也尝试过这个。以及框架和每个框架,以及窗口的文档成员