2010-09-17 26 views
6

¿Cómo puedo detectar si un java-applet se ha cargado correctamente sin sondear el navegador/usando setTimout?Detectar cuando se carga un Applet

¿Hay algún evento al que pueda vincularme?

El problema es: no es un pop-up preguntando al usuario si confía en el applet o no, y que tarda unos pocos segundos hasta que el usuario hace clic en "Sí" , mientras tanto mi código no se ejecuta debido a que el applet tiene no ha sido cargado

Respuesta

3

¿Quieres decir desde javascript? Puedes preguntar en el applet. Haga que establezca un valor booleano en verdadero en init(), y devuélvalo en un método que llame ... oh, espere, escribió "sin usar setTimeout". Bueno, en este caso, supongo que tienes que ir al revés, y hacer que tu applet invoque un método de JavaScript (por ejemplo, con JSObject.getWindow (this);) ... Pero creo que esto es más difícil/propenso a errores que usar un temporizador hasta que se cargue el applet.

+0

Terminé usando el temporizador para decir cuándo se cargó el applet, es más simple que la otra opción – portoalet

0

Sé que esta pregunta es bastante antigua, pero mi forma preferida de hacerlo es que las Pantallas de carga de Java son bastante difíciles de implementar, y configurar una div de pantalla completa con spin.js no es, es decirle al applet para llamar a una función de JavaScript que oculta el div de carga cuando se ejecuta la función init() del applet java.

Llamar a una función JavaScript desde Java es bastante simple:

import java.net.*; 

public void init() { 
    if (!isJava5OrSuperior()) { 
     showError(getLocalizedString("requirementsMessage")); 
    } else { 
     createAppletApplication(); 
     try { 
     getAppletContext().showDocument 
      (new URL("javascript:appletReady()")); 
     } 
     catch (MalformedURLException me) { } 
    } 
    } 

Esto llamará a la función appletReady() de la página, si está vinculado desde otro archivo JS o secuencias de comandos directamente en el HTML, tan pronto como sea el applet se ejecuta. Entonces, en lugar de sondear su applet indefinidamente, solo ejecuta la función cuando esté lista.

Cuestiones relacionadas