No se puede entender por el manual: ¿cómo realmente ejecutar la función JS desde Java?Cómo ejecutar la función de JavaScript desde GWT Java con JSNI?
Por ejemplo, tengo una función en mi página HTML:
<script type="text/javascript" language="javascript">
function foo() {
alert('Foo!');
}
</script>
El módulo siguiente muestra dos botones, sólo en segundo lugar de las que trabaja:
public class Test_GoogleWeb_JSNI_01 implements EntryPoint {
public void onModuleLoad() {
Button fooButton = new Button("Foo!");
fooButton.addClickHandler(new ClickHandler(){
public void onClick(ClickEvent event) {
fooRunner();
};
});
HTML fooButtonNative = new HTML();
fooButtonNative.setHTML("<input type='button' value='Foo Native' onclick='foo()'>");
RootPanel rootPanel = RootPanel.get();
rootPanel.add(fooButton);
rootPanel.add(fooButtonNative);
}
public static native void fooRunner() /*-{
foo();
}-*/;
}
Se dice en el manual, que funciones nativas implementadas dentro del marco anidado, que explica la situación. ¿Pero cómo ejecutar funciones JS entonces?
ACTUALIZACIÓN 1 El siguiente funciona.
Java:
public static native void fooRunner() /*-{
$doc.fooRunner();
}-*/;
JS:
<script type="text/javascript" language="javascript">
document.fooRunner = function foo() {
alert('Foo!');
}
</script>
¿Hay una mejor manera?
¿Puedes llamar a un método javascrypt que devuelve un objeto? y usar ese objeto? –