2008-09-11 15 views
10

Estoy trabajando en un proyecto donde estamos usando un applet de Java para parte de la UI (un mapa, específicamente), pero construyendo el resto de la UI alrededor del applet en HTML/JavaScript, comunicándonos con el applet a través de LiveConnect/NPAPI. Un poco extraño, lo sé, pero supongamos que la configuración no está en discusión. Empecé a planear el uso de jQuery como mi framework de JavaScript, pero me encontré con dos problemas.jQuery y applets de Java

emisión de la primera:

Selección el applet 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()); 

Ejecución de la encima de los resultados de JavaScript en

$("#applet-id").foo is not a function

Esto está en contraste con prototipos, en donde el código análoga funciona:

var applet = $("applet-id"); 
alert(applet.foo()); 

Entonces ... ¿dónde iban los métodos de applet?

Edición del segundo:

Hay un problema conocido con jQuery y applets en Firefox 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm

Es una posibilidad remota, pero ¿alguien sabe de alguna solución? Sospecho que este problema no es reparable, lo que significará cambiar a Prototype.

¡Gracias por la ayuda!

Respuesta

12

Para el primer número, la forma de tratar

alert($("#applet-id")[0].foo()); 

Para la segunda cuestión aquí es un thread 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 que el 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(); 
}); 
Cuestiones relacionadas