Hans: Mysteriöser Fehler beim Bildertausch

Beitrag lesen

Hallo Felix,

vielen Dank für die Antwort!

Das mit den globalen Variablen wird abgestellt. Nicht genau aufgepasst.

Wenn Du schon dabei bist, Dein Script zu verbessern, da frage ich doch gleich: Was tun Besucher ohne Javascript? Was bekommen die zu sehen?

Die Benutzbarkeit ohne Javscript ist mir sehr wichtig. Aber dies würde mich gleich zu einer anderen Frage führen:

Ich habe vor den Linktausch mit einem Link wie dem folgenden durchzuführen:
<a href="{SELF}?bild={bildnr}" onclick="return picChanged({thumb});"><img...></a>

Die Funktion picChanged gibt entweder true oder false zurück. Ist Javascript aktiviert und klappt der Bildtausch (Test auf img.complete) so gibt die Funktion false zurück. Dadurch wird das Gehen zu {SELF}?bild=... unterbunden. Ist Javascript deaktiviert so wird einfach nur dem Link gefolgt, welcher die gleiche Seite mit dem anderen Bild in groß neu lädt.

Mit den getesteten Browsern funktioniert das einwandfrei. Könnte es damit sonst noch Probleme geben? (Nach einem kurzen Blick auf lightbox wird es dort ähnlich gemacht?! Aber ein sehr schöner Link, Danke! :))

Du schreibst auch etwas über Abmessungen, und dass diese nach dem Bilderwechsel nicht korrigiert würden. Wie wäre es denn, wenn das umgebende Element des "großen Bildes" einfach eine Mindestgröße hat, innerhalb derer es ein Bild per CSS zentriert anzeigt? Dann braucht es keine Korrekturen an den Abmessungen mittels Javascript!

Die Abmessungen würden sich also durch die Bildmaße selbst anpassen? Damit hatte ich ein paar Probleme, außerdem passten sich die Maße immer erst an wenn das Bild voll geladen war. Das war mir etwas zu spät.

Du könntest auch das Vollbild jeweils per Javascript vorausladen lassen und während dieses Ladevorgangs eine Animation zeigen (wie in etwa bei der lightbox).

Ich lasse die Bilder onLoad vorausladen. Dabei bin ich mir aber nie sicher, ob das so richtig klappt... Die Funktion:
function...{
  if(document.Vorladen) return true;
  document.Vorladen = new Array();
  var tbilder = document.getElementsByName('thumblink');
  if(document.images){
    for(var i = 0; i < tbilder.length; i++){
 src = tbilder[i].firstChild.src.replace('_thumb','');
 document.Vorladen[i] = new Image();
        document.Vorladen[i].src = src;
    }
  }
}

Schön fände ich, wenn das Script als extern eingebundene JavaScript-Datei sich selbständig initialisiert (also die "kleinen Bilder" mit dem Bildertausch versieht, die sonst einfach nur auf das Vollbild verweisen) und damit "unobtrusive" ist.

Meinen Ansatz hatte ich ja oben beschrieben. Ich wüsste gerne was von beidem die beste Lösung ist. Auf den Seiten habe ich auch noch eine Bestellbox mit Selects, die Ihre Inhalte anpassen. Bei der mache ich es so, dass sie beim Laden initialisiert wird und biete sonst eine einfache Bestellmöglichkeit ohne Javascript.

Magst Du einen Link zu Deiner bisherigen Version posten, damit man sich das genauer anschauen kann?

Jau das kann ich tun! Ich habe es bisher aber noch nicht online und muss in Kürze zu einem Termin. Ich werde es heute abend mal online stellen und den Link dann posten.

Grüße
Hans