0 votes
in SoSci Survey (dt.) by s233103 (125 points)

Ich hatte leider nie viel mit Programmieren zu tun und fühle mich etwas verloren. Ich möchte in meinem Fragebogen die Verweildauer auf verschiedenen Seiten mittels Latency Timer messen. Es handelt sich um Seiten, auf denen Bilder gezeigt werden und Seiten mit offenen Textfeldern. Leider haben mir die Anleitungen dazu nur bedingt weiter geholfen und für den Code musste ich auch AI um weitere Hilfe bitten (deshalb vielleicht einige komische Bezeichnungen).

Ich möchte die Verweildauer auf verschiedenen Seiten ab Zeitpunkt des fertig Ladens bis zum Betätigen des "weiter" Buttons erfassen. Im Quellcode wurde mir angezeigt, dass der Button "'submit0'" heißt aber sicher bin ich mir da auch nicht. Ich habe mehrere interne Variablen angelegt und mich am entsprechenden Code versucht, aber mir werden die Variablen nicht in der Datenausgabe beim Testen des Fragebogens angezeigt.

Ich drehe mich etwas im Kreis und bin sehr dankbar über jegliche Hilfe. Hier ist der Code in Textform:

<script type="text/javascript"> 
window.addEventListener("load", function() {
var timer = new LatencyTimer();
timer.registerItem('MS01_05', true);
var continueButton = registerElement('submit0');
  continueButton.addEventListener('click', function() {
  var timeOnPage = timer.getItem('MS01_05');
  console.log('Verweildauer:', timeOnPage);
  put('MS01_05', timeOnPage);
});
  });
</script>


1 Answer

0 votes
by SoSci Survey (327k points)
selected by s233103
 
Best answer

Diese Zeile hier ist m.E. falsch:

var continueButton = registerElement('submit0');

Es gibt keine Funktion registerElement(), nur eine Methode LatencyTimer.registerElement(). Aber diese Methode (so heißt eine Funktion in einer Klasse) erwartet drei Parameter und nicht nur einen.

Ich wage zu behaupten, dass die AI keinerlei Trainingsmaterial zum LatencyTimer hatte, und deshalb nicht wirklich hilfreich war... Das hier wäre der korrekte Code:

<script>
window.addEventListener("load", function() {
    var nextButton = document.getElementById("submit0");
    var timer = new LatencyTimer();
    timer.registerElement(nextButton, "IV01_01", true);
});
</script>

Effektiv ist es nur diese eine Zeile, mit der Sie sagen "miss die Zet bis zum Klick auf Weiter und speichere die Zeit in IV01_01":

    timer.registerElement(nextButton, "IV01_01", true);

Es gibt übrigens noch eine Gemeinheit: Man kann die Seite nicht nur durch Klick auf "Weiter" abschicken, sondern auch durch Drücken der Eingabetaste. Zumindest unter bestimmten Bedingungen.

Wenn Sie auch das abfangen möchten, könnten Sie den Code wie folgt anpassen.

<script>
window.addEventListener("load", function() {
    var qnrForm = document.getElementById("questionnaireForm");
    var timer = new LatencyTimer();
    qnrForm.addEventListener("submit", timer.eventHandler("IV01_01", true));
});
</script>

Hier wird jetzt direkt auf das Abschicken der Seite gelauscht, und nicht mehr auf den Knopf.

by s233103 (125 points)
Vielen Dank für die ausführliche Antwort! Mit diesem Code funktioniert es :)

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

...