Guten Tag
In einem Projekt arbeiten wir mit Zeitbeschränkungen, bzw. einer Zeitverzögerung auf unterschiedlichen Seiten. Die Verzögerung soll die Befragten genau 5 Minuten auf dieser Seite lassen. Wir haben zwei solcher Seiten und arbeiten mit einem Timer (Automatisch weiter zur nächsten Seite). Während die Zeitbeschränkung auf der ersten Seite klappt, haben wir nun verschiedentlich zurückgemeldet bekommen, dass die Zeitverzögerung auf der zweiten Seite, die den gleichen Code enthält, nicht funktioniert. Hier der entsprechende PHP und HTML-Code, den wir eingesetzt haben:
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 = 300; // 5 Minuten (300 Sekunden) wird Stoppseite angezeigt
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("Zeit für die zweite Runde!");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
Und entsprechend auf der zweiten Seite mit Zeitverzögerung:
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 = 300; // 5 Minuten (300 Sekunden) wird Stoppseite angezeigt
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("Zeit für die dritte Runde!");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
Vielen Dank für Ihre Unterstützung!