2010-09-17 19 views
6

Comment puis-je détecter si une applet Java a été chargée avec succès sans interroger le navigateur/en utilisant setTimout?Détecter lorsqu'une applet est chargée

Y a-t-il un événement auquel je peux me lier?

Le problème est le suivant: il y a un pop-up demandant à l'utilisateur s'il fait confiance à l'applet ou non, et qui prend quelques secondes jusqu'à ce que l'utilisateur clique « Oui » , quant à lui mon code ne parvient pas à exécuter parce que l'applet a pas été chargé.

Répondre

3

Vous voulez dire de javascript? Vous pouvez demander l'applet. Avoir un booléen à true dans init(), et le retourner dans une méthode que vous appelez ... oh attendez, vous avez écrit "sans utiliser setTimeout". Eh bien, dans ce cas, je suppose que vous devez aller dans l'autre sens, et que votre applet appelle une méthode javascript (par exemple avec JSObject.getWindow (this);) Mais je pense que c'est plus difficile/sujettes aux bugs que d'utiliser une minuterie jusqu'à ce que l'applet est chargé.

+0

J'ai fini par utiliser la minuterie pour savoir quand l'applet a été chargée, c'est plus simple que l'autre option – portoalet

0

Je sais que cette question est assez ancienne, mais c'est mon meilleur moyen de le faire, car les Java Loading Screens sont difficiles à implémenter, et configurer un div en plein écran avec spin.js, c'est dire à l'applet pour appeler une fonction JavaScript qui cache le div de chargement lorsque la fonction init() de l'applet Java s'exécute.

Appel d'une fonction JavaScript de Java est assez simple:

import java.net.*; 

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

Ceci appellera la fonction appletReady() de votre page, si elle est liée à un autre fichier JS ou scénarisé directement dans le code HTML, dès L'applet elle-même s'exécute. Ainsi, au lieu d'interroger votre applet indéfiniment, vous exécutez simplement la fonction quand elle est prête.