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:
meinXML = new XML();
//weise onLoad Hanlder die Funktion manageLoad zu
meinXML.onLoad = manageLoad;
//lade unbekannte SWF.
meinXML.load("unbekannte.swf");
//Funktion die onLoad Hander aufrufen soll.
function manageLoad(success)
{
if(success)
{
//Daten wurden geparst. Nur welche?
//prüfe ob 404 Dokument geparst wurde. var parsed = String(meinXML);
if(parsed.indexOf("404") != -1)
{
//404 Dokument wurde geparst.
}
else
{
//kein 404 Dokument wurde geparst.
}
}
else
{
//Keine Daten wurden geparst.
//Kein 404 Dokument vom Webserver wurde geparst.
}
}
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