Matar Java Applet a través de Javascript

Estoy trabajando para una empresa en desarrollo y estoy realizando un importante rediseño en una aplicación web, que recarga todo después de cada clic, para hacer un uso extensivo de Javascript, por lo que realmente se siente como una aplicación web real. Una de las características es utilizar un Painter basado en la web (piense en MSPaint en la Web), que incorporo en la página bajo demanda. Después de pintar y cargar la imagen, la aplicación web descarga el applet y continúa para mostrar el directorio donde se cargó el archivo.

Aquí es donde comienza el problema. Todo funciona en IE y Safari, pero no en Firefox 3.5 (aunque 3.0 funciona perfectamente). Firebug me dice que la propiedad expando falta.

La aplicación web Tiparlo en la que estaba trabajando antes tenía un problema similar (de hecho, cualquier manipulación realizada en un applet a través de jQuery es defectuosa) pero resolvió ese problema envolviendo un div y controlando (ocultar y mostrar) el div en lugar de el applet Lamentablemente, esto no es aplicable en esta aplicación web, ya que el applet debe ser destruido y no solo oculto y mostrado, ya que requiere demasiados recursos para ejecutarse todo el tiempo donde no se necesita.

Para abreviar: ¿es posible hacer que un applet se destruya a sí mismo a través de Javascript? Alternativamente: ¿Hay alguna solución al problema jQuery / expando / applet? Sé que el applet está obsoleto en HTML 4.01 estricto, pero cambiarlo a objeto no es una opción en este momento.

EDITAR: He agregado una imagen de Firefox + Firebug para mostrarle el mensaje de error real. El Código de publicación no hace ningún favor, ya que funciona perfectamente en todos los demás navegadores y es un problema específico de Firefox 3.5. Aquí hay fotos

Nota: puede ignorar el error JS que proviene de button.js.

Siempre puede cargar el applet en un iframe y simplemente alejarse de la página donde se carga el applet. Esto lo matará.

Tu otra opción si quieres llamar a la destrucción de javascript sería poner algo como esto en.

 public void killApplet() { AccessController.doPrivileged(new PrivilegedAction() { public Void run() { // kill the JVM System.exit(0); return null; } }); } 

Esta no es una buena forma de anular un applet, pero en los navegadores más nuevos no produce un error JS, en los más antiguos como IE6 arrojará un error js.

Le sugiero que cree una clase que supervise el applet que se eliminará. ejecuta el monitor como una especie de servlet y obtén javascript para enviar comandos ‘kill applet’ cuando sea necesario eliminarlos.