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

0 votes

Guten Tag,

ich führe eine Antwortzeitmessung auf einigen Fragebogenseiten durch und habe hierzu zwei Fragen:

Erstens ab wann genau startet die von SoScisurvey angebotene Zeitmessung der Verweildauer pro Seite?

Zweitens gibt es die Möglichkeit in diesem Zuge, auf einen Marker zu verweisen, der angibt, dass die Seite bzw. die darin gezeigte Bilddatei geladen ist? - um mögliche Verzerrungen der Antwortlatenzzeit zu vermeiden.

Vielen Dank im Voraus! :)
LG Daniel

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

1 Answer

0 votes

Erstens ab wann genau startet die von SoScisurvey angebotene Zeitmessung der Verweildauer pro Seite?

Die standardmäßig aufgezeichneten Werte (TIME...) beginnen mit Generierung der Seite auf dem Server und enden mit Eingang der Antworten auf dem Server. Nachdem diese Messung komplett Serverseitig erfolgt, enthält sie jegliche Zeiten für Datenübermittlung und Seitenaufbau.

Entsprechend erfolgt diese Messung auch nur sekundengenau. Wobei man nochmal mit ein paar Sekunden Ungenauigkeit aufgrund der o.g. Latenzen rechnen kann.

Zweitens gibt es die Möglichkeit in diesem Zuge, auf einen Marker zu verweisen, der angibt, dass die Seite bzw. die darin gezeigte Bilddatei geladen ist?

Wenn Sie eine genauere Messung benötigen, dann brauchen Sie ein wenig JavaScript. Damit können Sie relativ einfach den Zeitraum zwischen dem vollständigen Laden der Seite und dem Klick auf den "Weiter"-Knopf aufzeichnen und in einer internen Variable ablegen.

var intVar = document.getElementById("IV01_01");
var pageStart = new Date();
var pageLoad = -1;
window.addEventListener("load", function() {
  pageLoad = new Date();
});
SoSciTools.questionnaire.attachCheck(function() {
  var pageSend = new Date();
  intVar.value = pageSend.getTime() - pageLoad.getTime();
  return true;
});

Über diesem Code muss eine interne Variable auf der Seite eingebunden werden und das IV01_01 muss gegen die Kennung der Variable ausgetauscht werden.

by SoSci Survey (207k points)
Vielen dank für Ihre Antwort. :) Nun habe ich dazu noch eine Folgefrage:

Es geht grundsätzlich um eine Studie, in der die Antwortlatenzen der Probanden gemessen werden sollen - hierbei soll von dem Moment, in dem die Seite vollständig geladen hat bis zu dem Zeitpunkt, in dem der Proband das erste Mal eine Taste bedient, gemessen werden. Dies habe ich mit einem EventListener (keydown) umgesetzt. Bis dato sah der Code wie folgt aus (misst schon ab Generierung der Seite, ohne Korrektur dieser Verzerrung durch einen verzögerten Seitenabruf):

<script>

performance.mark("mess0");                                    // Setzen des ersten Messpunktes 1, wir müssen 0 verwenden da man bei 0 anfängt zu zählen

addEventListener("keydown", function() {                            // Befehl, der eine Tastatureingabe überwacht
 performance.mark("mess1");                                    // Setzen des ersten Messpunktes 2
 performance.measure("differenz1", "mess0", "mess1");                        // Variablenvergabe, Variable heisst Messpunkte, und es werden alle "marks" automatisch benannt
 var messpunkte = performance.getEntriesByType("mark");
 var messdifferenzen = performance.getEntriesByType("measure");            // Variablenvergabe, Variable heisst Messdifferenzen, und es werden alle "measures" automatisch benannt
 var input = document.getElementById("IV01_01");
input.value = messdifferenzen[0].duration;
console.log(messdifferenzen);
});

</script>

Diese Code hat soweit funktioniert und gibt mir auch eine Differenzzeitmessung in Millisekunden aus, allerdings würde ich nun gerne noch Ihren Befehl einbinden, um die Messung genauer zu machen (Beginn der Messung, wenn Seite vollständig geladen ist).
Mein Versuch des Einbindens:

<script>
                                    // Setzen des ersten Messpunktes 1, wir müssen 0 verwenden da man bei 0 anfängt zu zählen
var intVar = document.getElementById("IV01_01");
var pageStart = new Date();
var pageLoad = -1;
window.addEventListener("load", function() {
  pageLoad = new Date();
});
addEventListener("keydown", function() {                            // Befehl, der eine Tastatureingabe überwacht
 performance.mark("mess1");                                    // Setzen des Messpunktes 2
 performance.measure("differenz1", "load", "mess1");                       
// Variablenvergabe, Variable heisst Messpunkte, und es werden alle "marks" automatisch benannt
 var messpunkte = performance.getEntriesByType("mark");
 var messdifferenzen = performance.getEntriesByType("measure");            // Variablenvergabe, Variable heisst Messdifferenzen, und es werden alle "measures" automatisch benannt
 var input = document.getElementById("IV01_02");
input.value = messdifferenzen[0].duration;
console.log(messdifferenzen);
});

</script>


Ich bin mir nicht ganz sicher, wo ich das Ganze einbinden soll & ob es mit performance.mark("mess0") am Anfang dann nicht inhaltliche Dopplungen (zwei Definitionen bezogen auf den ersten Messzeitpunkt) gibt? Doch wenn ich diese Zeile entferne gibt es Probleme bei der Differenzmessung unten... (keine Messwert-Ausgabe der internen Variablen).

Könnten Sie mir weiterhelfen, an welcher Stelle ich Ihren Code richtig einbinde?

Vielen Dank im Voraus! :)
LG Daniel
Ich hatte nicht gesehen, dass die andere Frage auch von Ihnen stammte ;)

> allerdings würde ich nun gerne noch Ihren Befehl einbinden, um die Messung genauer zu machen (Beginn der Messung, wenn Seite vollständig geladen ist).

Versuchen Sie es hiermit:

window.addEventListener("load", function() {
 performance.mark("complete");                       
}

Weiter hinten im Code ändern Sie das "load" dann nach "complete". Ich kenne zwar nicht die dem "performance" zugrundeliegende Bibliothek, aber es sieht nicht so wahnsinnig kompliziert aus.

Das "load" Ereignis wird ausgelöst, wenn die Seite und alle verbundenen Ressourcen (z.B. Bilder) vollständig geladen sind.
Scheint jetzt zu funktionieren :) Vielen Dank!
...