Erkennen, ob die Flash-Anwendung korrekt mit Javascript geladen wurde?

8

Mein Produkt öffnet einen Webbrowser und zeigt auf eine HTML-Datei mit einer lokalen Flash-Anwendung. Wie erkenne ich programmgesteuert, ob diese Datei erfolgreich geladen wurde und wenn nicht, welche Ausnahme ausgelöst wurde? Gibt es eine Möglichkeit, dies mit Javascript zu tun?

Es ist nicht genug extern zu prüfen, ob die Datei auf der Festplatte existiert, weil ich andere Fehler gesehen habe (Race Conditions könnten beteiligt sein).

    
Gili 30.12.2008, 01:51
quelle

4 Antworten

11

Ich beantworte meine eigene Frage: Ссылка

  1. Definieren Sie eine JavaScript-Funktion, die aufgerufen werden soll, wenn Flash geladen wird.
  2. Rufen Sie diese Methode am Anfang Ihrer Flash-Datei auf.
  3. Verwenden Sie einen Timer, um zu erkennen, ob der Rückruf nie aufgerufen wird.
  4. Rufen Sie lieber Javascript-Funktionen aus Flash auf, als Flash-Funktionen aus Javascript aufzurufen. In beiden Fällen können Sie keine Funktion aufrufen, die noch nicht geladen wurde. Es ist viel einfacher zu garantieren, dass der Browser Ihre Javascript-Funktion geladen hat, bevor er sie aus Flash aufruft, als zu garantieren, dass Flash die Flash-Funktion vor dem Aufruf aus Javascript geladen hat.

Hier ist ein Beispiel:

  • Ich verwende swfobject , um Flash einzubetten.
  • Ich verwende FlashVars, um Flash mitzuteilen, welche Javascript-Funktion aufgerufen werden soll. Dies ist nützlich, wenn mehrere Flash-Objekte auf der Seite vorhanden sind.

Flash

%Vor%

JavaScript

%Vor%     
Gili 30.12.2008, 02:24
quelle
4

In Fällen, in denen Sie das swf nicht ändern können und das Hinzufügen eines ExternalInterfaces keine Option ist, können Sie immer noch Javascript verwenden, um den Status des swf zu erhalten. Beispielsweise können Sie document.getElementById (swf_id) .PercentLoaded () aus Javascript aufrufen und auf 100 warten.

Das wird Ihnen nicht sagen, welche Ausnahme ausgelöst wurde, wenn der SWF nicht geladen werden konnte, aber Sie werden zumindest sicher wissen, ob er geladen wurde. Weitere nützliche Anrufe finden Sie hier: Ссылка

    
yanni 28.06.2011 00:08
quelle
3

Wenn die HTML-Seite geladen wird, ist der Flash-Inhalt möglicherweise noch nicht vollständig geladen. Wenn die SWF-Datei nicht geladen wird, scheint sie fehlgeschlagen zu sein.

Die Methode, die ich normalerweise empfehle, ist, dass die SWF sofort eine JavaScript-Funktion über ExternalInterface aufruft, wenn der Dokumentklassenkonstruktor aufgerufen wird. Nehmen wir an, dass die SWF-Datei nicht geladen werden kann, wenn diese JS-Funktion nicht aufgerufen wird.

    
joshtynjala 03.01.2009 21:37
quelle
1

Gemäß der Adobe ExternalInterface-Dokumentation: Ссылка Einige Webbrowser beschränken den Aufruf einer JavaScript-Funktion über ExternalInterface im Konstruktor der Dokumentklasse, wenn ein Pop-Blocker aktiviert ist.

Gibt es eine andere Lösung, um zu erkennen, wann der SWF-Film erfolgreich geladen wurde?

    
ggarber 18.06.2009 10:24
quelle

Tags und Links