0 votes
in SoSci Survey (dt.) by s027767 (235 points)
closed by SoSci Survey

Liebes SosciSurvey Team

Im Rahmen einer Reaktionszeitaufgabe (90 Sek. Zeit), die aus Platzgründen (Tabletdisplay) leider auf mehrere Seiten verteilt werden muss, möchte ich gerne bei jedem Seitenwechsel die neue Seite erst anzeigen lassen, sobald sie vollständig geladen ist.
Zusätzlich möchte ich die Differenz berechnen zwischen Anfangs- und Endzeitpunkt des Ladeprozesses für eine Seite im FB, damit ich diese Differenz zum laufenden Timer hinzuaddieren kann. (Die Reaktionszeitaufgabe läuft insgesamt ca. 8 Seiten, dies möchte ich für jede Seite erheben.)
Bei der Umsetzung bin ich mir leider noch etwas unsicher und bräuchte ein paar Tipps.

Ich habe mit Javascript begonnen bzw. aus dem Internet zusammenkopiert:
Zu Anfang wird der Startzeitpunkt gemessen, wenn die Seite angefangen wird zu laden:

<script type="text/javascript">
  <!--
       window.startTime = (new Date).getTime(); 
  -->
</script>

Dann wird die Seite erst angezeigt, wenn sie vollständig geladen wurde (leider hier noch über ein Alert-Fenster, das möchte ich später nicht mehr). Der Anfangszeitpunkt wird dann vom Endzeitpunkt abgezogen:

<script type="text/javascript">
  <!--
    function WaitForPageLoad() {
      if(document.readyState != "complete") {
        window.setTimeout(WaitForPageLoad, 100);
        return false;
      }
      alert("Die Webseite ist vollständig geladen.");
      var loadingtime = (new Date).getTime() - window.startTime;
      }
    window.onload = WaitForPageLoad; 
  -->
</script>

Ist der Code korrekt, abgesehen von der Zeile "alert("Die Webseite ist vollständig geladen.");", was ich später nicht mehr drin haben will, weil die Seite dann zu einem Zeitpunkt komplett angezeigt werden soll.

Die var loadingtime würde ich dann auf der nächsten FB-Seite zum timer addieren.

Vielen Dank fürs Darüberschauen!

closed with the note: Es liegen keine neuen/ergänzenden Informationen vor
by SoSci Survey (302k points)
Welchen Fragetyp genau verwenden Sie? Inwiefern "spart" die Verteilung auf mehrere Seiten Platz?

> Die var loadingtime würde ich dann auf der nächsten FB-Seite zum timer addieren.

Nun, das ist prinzipiell schon möglich, aber ich würde empfehlen, dass Sie stattdessen die Zeit für jede Seite in einer internen Variable speichern. Diese könnten Sie einfach inj die Seite einbinden und via .value mit dem Wert belegen: https://www.soscisurvey.de/help/doku.php/de:create:inputs-custom
by s027767 (235 points)
Wir haben offene Fragen (Textfelder) und auf dem Tablet nimmt die digitale Tastatur dann so viel Platz weg, dass man die Aufgabe auf mehrere Seiten verteilen muss.

Vielen Dank für den Tipp mit .value.
Das werde ich so probieren.
Viele Grüße
by SoSci Survey (302k points)
Aber wird die Frage denn kleiner, wenn Sie sie verteilen? Sie haben leider noch nicht verraten, welchen Fragetyp Sie verwenden - aber wenn Sie eine Auswahlabfolge meinen, dann werden die Fragen standardmäßig ja abwechselnd und nicht gemeinsam angezeigt...
by s027767 (235 points)
Es sind 96 separate Fragen vom Typ "Offene Texteingabe". In jeder dieser 96 Fragen ist ein kleines Symbol abgebildet und eine Zahl zwischen 0 und 9 muss zugeordnet werden. Für die gesamte Aufgabe gibt es 90 Sekunden Zeit.
Bei der Tabletversion der Augabe nimmt die digitale Tastatur so viel Platz weg, dass wir die Aufgaben auf mehrere Seiten verteilen. Nur leider müssen wir dann den Timer eben anpassen, dass er über mehrere Seiten läuft, ohne dass die Ladezeit in die Bearbeitungszeit reinzählt. Hätten Sie eventuell noch eine Idee, anstatt auf jeder Seite die Ladezeit zu messen und abzuziehen?
Herzlichen Dank!
by SoSci Survey (302k points)
Mit ein zusätzlichem Aufwand (in JavaScript) wäre es möglich, dass Sie die Abschnitte sequenziell einblenden.

Ich würde anstatt der Ladezeit aber eher die Zeit zwischen dem onload-Event und dem Abschicken der Seite messen und speichern. Wenn Sie das in 96 interne Variablen legen (jeweils direkt vor dem Abschicken der Seite), können Sie mittels valueSum() jederzeit die bisherige Gesamtzeit ermitteln.
by s027767 (235 points)
Vielen Dank für den Tipp, ich werde jeweils die Zeit zwischen onload-Event und Absenden der Seite speichern und dann den verkürzten Timer auf jeder Seite neu laufen lassen.
Eine Frage habe ich noch: Warum ist der Timer über mehrere Seiten eigentlich in Sekunden und nicht in Millisekunden? Wäre das nicht genauer?

Vielen Dank nochmals.
by SoSci Survey (302k points)
> Eine Frage habe ich noch: Warum ist der Timer über mehrere Seiten eigentlich in Sekunden und nicht in Millisekunden? Wäre das nicht genauer?

Wenn Sie Ladezeiten im Sekundebereich haben und wenn Sie mit der time()-Funktion von PHP arbeiten (sekundengenau), dann wäre die Arbeit von Millisekunden nur eine Farce.

In dem Code aus der Anleitung wird ohnehin immer auf eine Sekunde genau gearbeitet (die Restzeit wird immer neu berechnet) - Rundungsfehler auf den einzelnen Seiten fließen in die Messung nicht ein.
by s027767 (235 points)
Vielen Dank für die schnelle Antwort.
Wäre es dann auch möglich, anstatt der time()-Funktion die microtime(true)-Funktion zu verwenden? Ich verwende den Timer über acht Seiten und theoretisch könnten die Rundungsfehler auf acht Seiten gerechnet relativ gross sein, oder nicht?
by SoSci Survey (302k points)
Wie schon geschrieben: Es gibt keinen Rundungsfehler, weil die verbleibende Rest-Zeit zu Beginn jeder Seite neu ermittelt wird. Und zwar basieren auf dem Start des Timers auf der ersten Getimerten Seite und auf Basis des aktuellen Zeitstempels.

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

...