Kristian: wenn "benutzername.gif" nicht existiert, nimm "dieses.gif"

Hallo.
Auf meiner Seite möchte ich eine Art Benutzericon anzeigen. (Rechts unter den Texten in der Mitte.)
Ich habe ein Bild mit benutzername.gif referenziert. Wenn allerdings kein benutzername.gif zu dem Nutzer existiert, wird kein Bild angezeigt - logisch. Allerdings gibt es dann beim IE dieses rote "X". Opera und Netscape/Mozilla zeigen nichts an, da ich kein "width" und "height" angegeben habe.
Nun das Problem: Ich will nicht dieses rote "X". Gibt es eine Möglichkeit, dem Browser zu sagen "Wenn benutzername.gif nicht existiert, nimm dieses.gif"? Dann könnte ich auch wieder Breite und Höhe angeben...

Danke.

  1. Dazu brauchst du PHP oder ASP (z.B.).

    Mit ASP geht's so:

    fso = server.createobject("scripting.filesystemboject")
    IF NOT fso.fileexists("benutzername.gif") THEN
      response.write "<img src='dieses.gif'>"
    ELSE
      response.write "<img src='benutzername.gif'>"
    END IF

    Gruss,
    Daniel

    1. Hallo Daniel.

      Mit ASP geht's so:

      Danke. Könnte man das evtl. auch mit Javascript machen?

      Grüße aus dem verschneiten Sachsen,
        Kristian

      1. Nein! Javascript ist clientseitig, die Überprüfung, ob eine Datei existiert hingegen serverseitig. Du brauchst also PHP, ASP, Perl oder was ähnliches.

        Gruss,
        Daniel

        1. Hallo daniel84,

          Nein! Javascript ist clientseitig, die Überprüfung, ob eine Datei existiert hingegen serverseitig. Du brauchst also PHP, ASP, Perl oder was ähnliches.

          Nicht ganz richtig, man kann mit Hilfe von Javascript prüfen, ob ein Bild geladen wird und im Misserfolgsfall ein Alternativbild laden. Siehe </archiv/2003/11/63789/#m362690/> ff.

          Grüße
          Siechfred

          1. Hallo.

            [...] man kann mit Hilfe von Javascript prüfen, ob ein Bild geladen wird und im Misserfolgsfall ein Alternativbild laden. Siehe </archiv/2003/11/63789/#m362690/> ff.

            Danke für den Link. Mit
            <img src="bild1.gif" onerror="this.src='bild2.gif'">
            geht es. Super!

            Vielen Dank,
              Kristian

            1. Hallo Kristian,

              Mit <img src="bild1.gif" onerror="this.src='bild2.gif'"> geht es.

              Zur Ergänzung: denke an den Einwand von Struppi im verlinkten Thread, dass du bei Nichtverfügbarkeit von bild2.gif eine Endlosschleife produzieren könntest, du musst also sicherstellen können, dass bild2.gif immer verfügbar ist.

              Grüße
              Siechfred

              1. Hallo Siechfred,

                Zur Ergänzung: denke an den Einwand von Struppi im verlinkten Thread, dass du bei Nichtverfügbarkeit von bild2.gif eine Endlosschleife produzieren könntest, du musst also sicherstellen können, dass bild2.gif immer verfügbar ist.

                Ist es. Vielleicht ist das nicht so klar rausgekommen in meinem ersten Beitrag: Ich weiss, dass Artikel X von Autor Y geschrieben wurde. Das Bild referenziere ich mit 'src="http://blabla/img/Y.gif"' im img-Tag. Wenn der Autor kein Bild mit seinem Namen in das Bilderverzeichnis hochgeladen hat, wird ein transparentes Bild  geladen. Der Bereich bleibt also leer. Das "keinautoricon.gif" wird nicht gelöscht.

                Noch zum Verständnis: Wenn das bild2.gif nicht vorhanden wäre, gäbe es eine Endlosschleife. Der Browser würde also beim Versuch, das bild2.gif zu laden, "hängen" bleiben. Als Betrachter wird mir also nur der Teil der Seite angezeigt, der vor dem Ladeversuch für das Bild schon geladen wurde?
                Und warum wird die Endlosschleife produziert? Weil der Browser versucht, das bild2.gif zu finden, es dabei aber wieder einen "Error" gibt und er wieder versucht, das bild2.gif zu laden?

                Grüße,
                  Kristian

                1. Hallo Kristian,

                  Noch zum Verständnis: Wenn das bild2.gif nicht vorhanden wäre, gäbe es eine Endlosschleife. Der Browser würde also beim Versuch, das bild2.gif zu laden, "hängen" bleiben. Als Betrachter wird mir also nur der Teil der Seite angezeigt, der vor dem Ladeversuch für das Bild schon geladen wurde?

                  Das hängt meines Wissens nach vom Browser ab. Geliefert bekommt er die vollständige Seite, was er bei der "Abarbeitung" des übermittelten Codes tut, wenn er an einer Stelle hängen bleibt, kommt wie gesagt auf den Browser an. Vielleicht bricht er die Abarbeitung des Codes ab, vielleicht hängt er sich auf, ich weiß es nicht :-)

                  Und warum wird die Endlosschleife produziert? Weil der Browser versucht, das bild2.gif zu finden, es dabei aber wieder einen "Error" gibt und er wieder versucht, das bild2.gif zu laden?

                  Ja, genau. Deshalb fand ich die von Struppi vorgeschlagene Variante (nachdem ich sie verstanden hatte ;-) ) besser, weil dort eine Endlosschleife ausgeschlossen werden kann.

                  Grüße
                  Siechfred

                  1. Hallo Siechfred,

                    Noch zum Verständnis: Wenn das bild2.gif nicht vorhanden wäre, gäbe es eine Endlosschleife. Der Browser würde also beim Versuch, das bild2.gif zu laden, "hängen" bleiben. Als Betrachter wird mir also nur der Teil der Seite angezeigt, der vor dem Ladeversuch für das Bild schon geladen wurde?
                    Das hängt meines Wissens nach vom Browser ab. Geliefert bekommt er die vollständige Seite, was er bei der "Abarbeitung" des übermittelten Codes tut, wenn er an einer Stelle hängen bleibt, kommt wie gesagt auf den Browser an. Vielleicht bricht er die Abarbeitung des Codes ab, vielleicht hängt er sich auf, ich weiß es nicht :-)

                    Schade.

                    Ja, genau. Deshalb fand ich die von Struppi vorgeschlagene Variante (nachdem ich sie verstanden hatte ;-) ) besser, weil dort eine Endlosschleife ausgeschlossen werden kann.

                    Prinzipiell besser, für mich aber wie gesagt zuviel des Guten, da das zweite Bild ja immer da ist.

                    Grüße,
                      Kristian

      2. Hallo Kristian,

        Danke. Könnte man das evtl. auch mit Javascript machen?

        möglicherweise hilft dir http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#onerror, aber so ganz das wahre ist das auch nicht - prüf lieber serverseitig ob das Bild vorhanden ist, oder nicht.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|