Liebes Support-Team,
bei der Funktion "Timer: Countdown über mehrere Seiten" habe ich entsprechend der Anleitung den php-Code auf der FB-Seite, wo der Countdown starten soll, aufgenommen:
// Ablauf der Zeit als Variable $timeout speichern
if (!isset($timeout)) {
$timeout = strtotime('+120 seconds');
registerVariable($timeout);
}
// Filter: Zeit abgelaufen?
if (time() > $timeout) {
goToPage('partNext');
}
// JavaScript zur Anzeige der verbleibenden Zeit
$timeLeft = $timeout - time();
// Statt JS01 muss hier die Kennung des Textes eingetragen werden
show('M105', array(
'%timeLeft%' => $timeLeft
));
In der Anleitung ist angegeben, dass damit verhindert werden soll, dass durch F5 oder den Zurück-Button der Timer neu startet, leider tut er das dennoch.
Auf den Folgeseiten, auf denen der Timer weiter läuft ist folgender Code:
// Filter: Zeit abgelaufen?
if (time() > $timeout) {
goToPage('partNext');
}
// JavaScript zur Anzeige der verbleibenden Zeit
$timeLeft = $timeout - time();
// Statt JS01 muss hier die Kennung des Textes eingetragen werden
show('M105', array(
'%timeLeft%' => $timeLeft
));
Sämtlicher Code ist unverändert von der Hilfe-Seite zum Thema "Countdown über mehrere Seiten" kopiert.
Können Sie mir bitte einen Hinweis geben, wie sich das verhindern lässt?
Vielen Dank vorab!
Viele Grüße
Hier der Java-Code:
<!-- HTML-Element zur Anzeige der Zeit -->
<div id="timeDisplay" style="font-size: 200%; margin: 16px 0; text-align: center">–</div>
<script type="text/javascript">
<!--
// Verbleibende Zeit initialisieren
var timeLeft = %timeLeft%;
var timeStart = new Date();
// Funkton zur Aktualisierung der Anzeige und Prüfung der Zeit
function updateCountdown() {
// Zeit berechnen
var now = new Date();
var timePage = Math.floor((now.getTime() - timeStart.getTime()) / 1000); // Vergangene Zeit [Sek.]
var remain = timeLeft - timePage;
// Zeit abgelaufen?
if (remain <= 0) {
remain = 0;
// Timer stoppen
window.clearInterval(timerInterval);
// Eine Meldung anzeigen (optional)
// alert("Die Zeit ist vorbei.");
// Den Teilnehmer zur nächsten Seite weiterleiten (optional)
SoSciTools.submitPage();
}
// Zeit anzeigen
var display = document.getElementById("timeDisplay");
if (!display) {
return;
}
while (display.lastChild) {
display.removeChild(display.lastChild);
}
var minutes = Math.floor(remain / 60);
var seconds = String(remain - 60 * minutes);
if (seconds.length < 2) {
seconds = "0" + seconds;
}
var displayText = String(minutes) + ":" + seconds;
var displayNode = document.createTextNode(displayText);
display.appendChild(displayNode);
}
// Initialisierung
var timerInterval = window.setInterval(updateCountdown, 250);
updateCountdown();
// -->
</script>