Liebes SoSci Survey Support Team,
mithilfe der Anleitung habe ich (erfolgreich) einen Timer in meine Umfrage integriert. Die Probanden erhalten 150 Sekunden zur Bearbeitung einer Aufgabe, bevor Sie automatisch zur nächsten Seite weitergeleitet werden.
Leider zählt der Timer nicht kontinuierlich herunter sondern springt abwechselnd zwischen 2 und 3-Sekundenschritten.
Gibt es einen offensichtlichen Fehler in meinem Code, der das Problem hervorruft?
if (!isset($time0)) {
$time0 = time();
registerVariable($time0); // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 60; // Der Teilnehmer hat 1 Minute (60 Sekunden) Zeit zur Bearbeitung
if (time() >= $time0 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);
<!--
// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Bearbeitungszeit ist abgelaufen. Ihre Einträge wurden erfolgreich gespeichert! Bitte klicken Sie auch 'Schließen‘ um zur nächsten Seite zu gelangen.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
/// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 2500;
function updateCountdown() {
// Zeit berechnen
var date = new Date();
var time = Math.ceil((timeout - date.getTime() - 50) / 1000); // Verbleibende Zeit in Sekunden
// Zeit anzeigen
var out = document.getElementById("remain");
if (!out) {
return;
}
while (out.lastChild) {
out.removeChild(out.lastChild);
}
var minutes = Math.floor(time / 60);
var seconds = String(time - 60 * minutes);
if (seconds.length < 1) seconds = "0" + seconds;
var display = String(minutes) + ":" + seconds;
var displayNode = document.createTextNode(display);
out.appendChild(displayNode);
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Zusätzlicher Timer für die Aktualisierung des Countdowns
window.setInterval(updateCountdown, 2500);
updateCountdown();
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 2500);
});
// -->
Pretest-Link zur betreffenden Seite: https://www.soscisurvey.de/recovery2022/?act=aVmkMd64dTjt3W6em3oLAoaK
Über einen Tipp würde ich mich sehr freuen.
Vielen Dank bereits im Voraus!