2010-09-17 16 views
6

Come posso rilevare se un'applet java è stata caricata correttamente senza eseguire il polling del browser/utilizzando setTimout?Rileva quando viene caricata un'applet

C'è qualche evento a cui posso associare?

Il problema è: c'è un pop-up che chiede all'utente se si fida l'applet o no, e che richiede pochi secondi fino a quando l'utente fa clic su "Sì" , nel frattempo il mio codice non riesce ad eseguire perché l'applet ha non è stato caricato.

risposta

3

Vuoi dire da javascript? Puoi chiedere all'applet. È necessario impostare un valore booleano su true in init() e restituirlo in un metodo che chiami ... oh aspetta, hai scritto "senza usare setTimeout". Bene, in questo caso, suppongo che tu debba fare il contrario, e fare in modo che l'applet chiami un metodo javascript (ad esempio con JSObject.getWindow (this);) ... Ma penso che questo sia più difficile/incline agli errori di usare un timer fino a quando l'applet non viene caricata.

+0

Ho finito per usare il timer per dire quando l'applet è stata caricata, è più semplice dell'altra opzione – portoalet

0

So che questa domanda è piuttosto vecchia, ma il mio modo preferito per farlo, perché Java Loading Screens è piuttosto difficile da implementare, e impostare un div a schermo intero con spin.js non lo è, è dire l'applet chiamare una funzione JavaScript che nasconde il div di caricamento quando viene eseguita la funzione init() dell'applet java.

Chiamata di una funzione JavaScript da Java è piuttosto semplice:

import java.net.*; 

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

Questo chiamerà la funzione appletReady() della pagina, se è legato da un altro file JS o script direttamente nel codice HTML, non appena l'applet stessa viene eseguita. Quindi, invece di eseguire il polling dell'applet per un tempo indefinito, è sufficiente eseguire la funzione quando è pronta.

Problemi correlati