我试图从applet调用Javascript方法,我读了一些例子,但没有任何作用。
小程序:
JSObject window = JSObject.getWindow(this);
String[] args = new String[]{"some string"};
window.call("alert2 ", args);
GWT,查看
public static native void export() /*-{
$wnd.alert2 = function(result) {
@cl.covepa.client.main.shared.view.DlgVerificarHuellaView::alert2(Ljava/lang/String;)(result);
}
}-*/;
public static void alert2(String result) {
Dialogs.getInstance().alert("CONFIRMACION :" + result);
}
在构造函数调用中,我也在onModuleLoad中进行测试。
export();
当applet运行时,它说
JavaScript对象上没有这样的方法“alert2”
没关系,我知道代码是混淆的,但我想这是方法保持其名称的方式,但不起作用,我仍然在客户端看到这个
function dBb(){$wnd.alert2=function(a){T2c((!S2c&&(S2c=new X2c),S2c),'CONFIRMACION :'+a)}}
我想念的是什么?!,谢谢
更新:
HTMLPanel包含一个带有此String的HTML对象,它在show DialogBox中添加。
<div>
<applet id="uploadApplet" code="app.VerifHuella.class"
archive="VerificarHuella.jar" width="322" height="465" MAYSCRIPT>
<param name="RUT" value="15645322"/>
</applet>
</div>
答案 0 :(得分:2)
看来你的问题是,当你调用它时,窗口中没有该方法。这可能是因为三个原因:
export()
onModuleLoad()
方法
无论如何,如果您想在不使用单行jsni的情况下导出类和方法,可以尝试gwtexporter,在您的情况下,您的代码可能如下所示:
class DlgVerificarHuellaView implements Exportable {
@Export($wnd.alert2)
public static void alert2(String msg) {
}
}
在不编写jsni的情况下导出函数的另一个好方法是使用gwtquery:
import static com.google.gwt.query.client.GQuery.*
Properties wnd = window.cast();
wnd.setFunction("alert2", new Function() {
public void f() {
Properties arg = getDataProperties();
DlgVerificarHuellaView.alert2(arg.get(0));
}
});