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!

¿Fue útil?

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();
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top