jQuery y Java applets
-
09-06-2019 - |
Pregunta
Estoy trabajando en un proyecto en el que estamos usando un applet de Java para la parte de la interfaz de usuario (un mapa, concretamente), pero el resto de la interfaz de usuario de todo el applet en HTML/JavaScript, la comunicación con el applet a través de live connect/NPAPI.Un poco extraño, lo sé, pero vamos a suponer que el programa de instalación no está bajo discusión.Yo comencé en la planificación sobre el uso de jQuery como mi framework JavaScript, pero me he encontrado con dos problemas.
Cuestión primera:
La selección de la aplicación no proporciona acceso a los métodos del applet.
Java:
public class MyApplet extends JApplet {
// ...
public String foo() { return "foo!"; }
}
JavaScript:
var applet = $("#applet-id");
alert(applet.foo());
Ejecute la mencionada JavaScript resultados en
$("#applet-id").foo is not a function
Esto es en contraste con el Prototipo, donde análogas a las que el código de trabajo:
var applet = $("applet-id");
alert(applet.foo());
Así que...¿de dónde había el applet métodos ir?
Tema de la segunda:
Hay un problema conocido con jQuery y applets en Firefox 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
Es un tiro largo, pero ¿alguien sabe de alguna solución?Sospecho que este problema no se puede arreglar, que va a significar un cambio para el Prototipo.
Gracias por la ayuda!
Solución
Para el primer problema, ¿qué tal intentar
alert( $("#applet-id")[0].foo() );
Para la segunda cuestión aquí es un hilo con una posible solución.
Citando la solución
// Prevent memory leaks in IE // And prevent errors on refresh with events like mouseover in other browsers // Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*").add(document).unbind(); });
cambio de ese código para:
// Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*:not('applet, object')").add(document).unbind(); });