Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

+1 vote

Hallo,

ich habe ein Problem mit der Verwendung von window.addEventListener("load", function() { mit einem Countdown bei der Präsentation eines Stimulusbildes. Das Problem ist, dass der Countdown zu zählen beginnt, bevor das Bild erscheint. Je nach System oder Browser gibt es eine Verzögerung von mehreren hundert Millisekunden zwischen dem Ladeereignis und dem Erscheinen des Bildes. (Ich habe es auch mit document und auch mit getElementById() anstelle von window versucht, aber das macht keinen Unterschied).

Haben Sie eine Idee oder gibt es einen Workaround, um einen Eventlistener zu definieren, der ausgelöst wird, wenn das Bild tatsächlich auf dem Bildschirm erscheint?

Da die untersuchten Betrachtungszeiten sehr kurz sind (in einer Bedingung nur eine Sekunde), entstehen relativ gesehen erhebliche Abweichungen.

Vielen Dank!

in SoSci Survey (dt.) by s066509 (165 points)

1 Answer

0 votes

Das load-Ereignis sollte vom Browser freigegeben werden, wenn die Bild-Datei vollständig zum Browser übertragen wurde. Ich gehe davon aus, dass das soweit funktioniert - zumindest wenn Sie das Dokumentoder das Bild beobachten.

Bei Arbeiten mit dem Modul "implizite Methoden" stellten wir fest, dass danach aber nochmal einige Zeit vergehen kann, um das BIld auf dem Bildschirm zu rendern. Dies kann man in den Entwicklertools von Firefox sehr schön beobachten.

Je größer das BIld, desto größer die Verzögerung, die für Skalierung und Rendering entsteht. Das waren meist um die 30 ms, aber bei einem großen Bild scheinen mir auch 100 ms nicht abwegig.

Wir haben dafür folgende Lösuung gefunden: Und zwar wurde das Bild nicht nur vorab geladen (Preloading), sondern auch kurzzeitig auf der Seite dargestellt. Dabei war es kein Problem, wenn es mit geringer Deckung (z.B. 99% Transparenz) gargestellt wurde. Es ging nur darum, dass es einmal komplett in der richtigen Größe gerendert wurde. Dann liegt es in irgend einem Cache des Browsers oder der Grafikkarte (dies habe ich tatsächlich nicht weiter verfolgt), aus welchem es dann blitzschnell (<10 ms) wieder dargestellt werden kann.

by SoSci Survey (199k points)
Vielen Dank für die Antwort!
Mir ist leider noch nicht ganz klar, wie das konkrete Vorgehen aussehen würde und wie man das umsetzen würde.
Im Prinzip würde man das "load"-Event dafür nutzen, das Bild auf der Seite anzuzeigen (Sie haben ja vermutlich bereits ein HTML-Element, welches das Bild zeigt), dabei die Opazität zu reduzieren und es nach z.B. 250 ms wieder auszublenden. Wenn das erledigt ist, würden Sie die eigentliche Darstellung starten, so wie es eigentlich nach dem "load" passieren sollte.
So funktioniert es :) Vielen Dank!
...