2010-09-17 7 views
6

Jak wykryć, czy aplet języka Java został poprawnie załadowany bez odpytywania przeglądarki/użycia setTimout?Wykrywanie ładowania apletu

Czy jest jakieś wydarzenie, które mogę powiązać?

Problem jest: nie ma pop-up z prośbą użytkownika, czy ufa on aplet czy nie, i trwa kilka sekund, aż użytkownik kliknie „tak” , tymczasem mój kod nie wykona, bo aplet ma nie zostało załadowane.

Odpowiedz

3

Masz na myśli javascript? Możesz poprosić o aplet. Niech to ustawi wartość logiczną na true w init(), i zwróci ją w metodzie, którą wywołujecie ... oh czekaj, napisałeś "bez użycia setTimeout". Cóż, w tym przypadku, myślę, że musisz odejść odwrotnie, i aplet powinien wywołać metodę javascript (na przykład z JSObject.getWindow (this);) ... Ale myślę, że jest to trudniejsze/podatne na błędy niż używanie timera do załadowania apletu.

+0

Skończyło się na tym, że używałem timera, aby stwierdzić, kiedy aplet został załadowany, jest prostsze niż inne opcje – portoalet

0

Wiem, że to pytanie jest dość stare, ale mój preferowany sposób to zrobić, ponieważ Java Loading Screens są dość trudne do wdrożenia, a ustawienie div pełnoekranowego z spin.js nie jest, to powiedzieć apletowi wywołać funkcję JavaScript, która ukrywa ładunek div, gdy uruchomiona jest funkcja init() apletu java.

Wywołanie funkcji JavaScript z Java jest całkiem prosta:

import java.net.*; 

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

Spowoduje to wywołanie funkcji appletReady() swojej strony, czy to związane z innego pliku JS lub skrypty bezpośrednio w kodzie HTML, jak najszybciej sam Applet działa. Zamiast odpytywania apletu w nieskończoność, po prostu uruchamiasz tę funkcję, gdy jest gotowa.

Powiązane problemy