Pasar la función JS al subprograma como detector de eventos
-
02-07-2019 - |
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);
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