Pregunta

¿Es posible pasar una función/devolución de llamada de JavaScript a un subprograma de Java?

Por ejemplo, tengo un subprograma con un botón que, cuando se presiona, llamará a la devolución de llamada js pasada.

function onCommand() {
  alert('Button pressed from applet');
}
applet.onCommand(onCommand);
¿Fue útil?

Solución

Tiendo a usar algo que derivé del ejemplo de reflexión al final de esta página, ya que entonces no necesitas entrometerte con tu classpath para que se compile

Luego simplemente paso cadenas JSON entre el subprograma y javascript.

Otros consejos

Puedes usar Objeto JSO para volver a llamar a javascript desde Java.

De esa página:

import netscape.javascript.*;
import java.applet.*;
import java.awt.*;
class MyApplet extends Applet {
     public void init() {
         JSObject win = JSObject.getWindow(this);
         JSObject doc = (JSObject) win.getMember("document");
         JSObject loc = (JSObject) doc.getMember("location");

         String s = (String) loc.getMember("href");  // document.location.href
         win.call("f", null);                      // Call f() in HTML page
     }
}

PD.Para utilizar JSObject, es posible que deba incluir la etiqueta "MAYSCRIPT" en la etiqueta html del subprograma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top