• SpryFlashCMS das Flash CMS
  • TWUMBLE - bald online
  • Adobe User Group
Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-10-2002, 19:14   #1 (Permalink)
Entwickler
 
Registriert seit: Apr 2002
Ort: Edinburgh, UK
Beiträge: 301
Lightbulb Lösung: fehlgeschlagenes loadMovie() erkennnen

Moin Leute,

habe gerade eine nette kleine Möglichkeit entdeckt um ein fehlgeschlagenes loadMovie() zu erkennen wenn z.B. die Datei nicht existiert.

Das Flash Ausgabefenster gibt dann ja immer

Error opening URL "meineurl"

aus. Das in ActionScript einfach nachzuweisen geht nicht. Allerdings mit einem Workaround über XML.

ActionScript:
  1. meinXML = new XML();
  2. //weise onLoad Hanlder die Funktion manageLoad zu
  3. meinXML.onLoad = manageLoad;
  4. //lade unbekannte SWF.
  5. meinXML.load("unbekannte.swf");
  6.  
  7. //Funktion die onLoad Hander aufrufen soll.
  8. function manageLoad(success)
  9. {   
  10.     if(success)
  11.     {
  12.         //Daten wurden geparst. Nur welche?
  13.         //prüfe ob 404 Dokument geparst wurde.
  14.         var parsed = String(meinXML);   
  15.         if(parsed.indexOf("404") != -1)
  16.         {   
  17.             //404 Dokument wurde geparst.         
  18.         }
  19.         else
  20.         {
  21.             //kein 404 Dokument wurde geparst.     
  22.         }
  23.     }
  24.     else
  25.     {
  26.         //Keine Daten wurden geparst.
  27.         //Kein 404 Dokument vom Webserver wurde geparst.       
  28.     }
  29. }

Der onLoad Handler ruft die Funktion manageLoad auf wenn Daten geparst und geladen wurden. Dabei sendet onLoad die Variable success als Parameter mit. success gibt true zurück wenn Daten geparst und geladen wurden. success gibt false zurück wenn das nicht geschehen ist. Viele Webserver geben bei nicht gefundenen Dateien 404 HTML Dokumente aus, die von Flash genauso geparst werden als wären sie XML Daten. Dadurch wird success trotzdem true, auch wenn eine XML Datei gar nicht existiert.

Wenn der Webserver 404 HTML Dokumente ausgibt ist success also immer true. Deshalb müssen wir jetzt die geparsten Daten mit dem 404 Dokument von unserem Webserver vergleichen. Ich suche deshalb nach der Zeichenfolge "404".

Und wenn "404" gefunden wurde, existiert die Datei nicht. Wenn "404" nicht gefunden wird, existiert sie.

Die letzte else wird nur erreicht wenn success false wird. Und das kann entweder offline passieren oder online falls der Webserver keine 404 Dokumente ausgibt.

Um fehlgeschlagene loadMovie() wiederzuerkennen könnte man außerdem vielleicht noch ein serverseitiges Script per loadVariables() abfragen. Das serverseitiges Script müsste dann irgendwie erkennen können ob die Datei existiert.

Gruß
Alex

Geändert von Alex U. (08-10-2002 um 12:51 Uhr)
Alex U. ist offline   Mit Zitat antworten
Alt 07-10-2002, 19:47   #2 (Permalink)
Flash-Wüstling
 
Benutzerbild von pheidrias
 
Registriert seit: Dec 2001
Ort: Halle/Saale
Beiträge: 4.300
Thumbs up

Hi Alex !

Super Idee !

Vielleicht sollte man einfach das gesamte erhaltene Dokument nach dem 404-String durchsuchen ?

if(escape(meinXML).indexOf("%3Ch1%3E%0A404%20Not%2 0found%20%3Cbr%3E%20fnord%23
23%0A%3C%2Fbr%3E%3C%2Fh1%3E")!=(-1)) {

Man bekommt ja wahrscheinlich nicht den http-Header raus - oder ?

tanti saluti,
pheidrias
__________________
Ehrlich währt am LÄNGSTEN !

Geändert von pheidrias (07-10-2002 um 19:53 Uhr)
pheidrias ist offline   Mit Zitat antworten
Alt 07-10-2002, 20:26   #3 (Permalink)
◘ ◘
 
Benutzerbild von beachmeat
 
Registriert seit: Dec 2001
Ort: Amsterdam
Beiträge: 6.126
feine Sache!
__________________
jeden Tag frisch
beachmeat ist offline   Mit Zitat antworten
Alt 07-10-2002, 21:11   #4 (Permalink)
Entwickler
 
Registriert seit: Apr 2002
Ort: Edinburgh, UK
Beiträge: 301
Zitat:
Geschrieben von pheidrias

Vielleicht sollte man einfach das gesamte erhaltene Dokument nach dem 404-String durchsuchen ?

if(escape(meinXML).indexOf("%3Ch1%3E%0A404%20Not%2 0found%20%3Cbr%3E%20fnord%23
23%0A%3C%2Fbr%3E%3C%2Fh1%3E")!=(-1)) {

indexOf() ist eine Idee:
ActionScript:
  1. parsed = String(meinXML);
  2. if(parsed.indexOf("404") != -1)
Das ist etwas einfacher und universeller und gefällt mir auch besser. Man könnte mit weiteren "if else" auch einfacher nach anderen Fehlermeldungen prüfen. escape() fällt ganz weg.

Wenn allerdings Flash aus einer Datei die Zeichenfolge "404" parst, wird die Datei als 404 Dokument vom Webserver erkannt. Ich glaube aber nicht das geparste SWFs "404" ausgeben. Ich bekomme ungefähr immer so etwas heraus:

FWS[

Fazit: Da man nur SWFs laden will, wird wohl der String "404" nie vorkommen und indexOf() ist besser. Ich habe den ersten Post erneuert.

Gruß
Alex

Geändert von Alex U. (07-10-2002 um 21:40 Uhr)
Alex U. ist offline   Mit Zitat antworten
Alt 07-10-2002, 22:27   #5 (Permalink)
◘ ◘
 
Benutzerbild von beachmeat
 
Registriert seit: Dec 2001
Ort: Amsterdam
Beiträge: 6.126
Man kann auch JPEGS laden!
__________________
jeden Tag frisch
beachmeat ist offline   Mit Zitat antworten
Alt 07-10-2002, 22:45   #6 (Permalink)
Entwickler
 
Registriert seit: Apr 2002
Ort: Edinburgh, UK
Beiträge: 301
Zitat:
Geschrieben von beachmeat
Man kann auch JPEGS laden!
Mit dem Flash 6 Player bekomme ich aus JPGs gar nichts zurück. Also würde die Methode auch nicht existierende JPGs erkennen.

Gruß
Alex
Alex U. ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 07:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2010 Marc Thiele und Sascha Wolter.