0 votes
in SoSci Survey (dt.) by s212490 (190 points)
edited by SoSci Survey

Meine Vpn haben eine Siete mit 10 Zahlenreihen. Ich möchte ihnen 4 Minuten Zeit geben bevor sie automatisch zur nächsten Seite weitergeleitet werden. Folgenden Code nutze ich:

if (!isset($time2)) {
  $time2 = time();
  registerVariable($time2);  // 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 = 240;  // Der Teilnehmer hat 4 Minuten (240 Sekunden) Zeit zur Bearbeitung
if (time() >= $time2 + $timer) {
  goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time2 + $timer - time();
replace('%remain%', $remain);

    <script type="text/javascript">
<!--
 
// Funktion zur Weiterleitung
function weiter() {
  // Eine Meldung anzeigen (optional)
  alert("Die Zeit ist vorbei.");
  // Den Teilnehmer zur nächsten Seite weiterleiten
  SoSciTools.submitPage(13);
}
 
// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 1000;
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 < 2) seconds = "0" + seconds;
  var display = String(minutes) + ":" + seconds;
  var displayNode = document.createTextNode(display);
  out.appendChild(displayNode);
}
 

 
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
  // Zusätzlicher Timer für die Aktualisierung des Countdowns
  window.setInterval(updateCountdown, 1000);
  updateCountdown();
  // Timer für automatische Weiterleitung starten
  window.setTimeout(weiter, %remain% * 1000);
});
 
// -->
</script>

<p>Verbleibende Zeit: <span id="remain"></span></p>

Nach 4 Minuten kommt allerdings nur der Hinweis, dass die Zeit vorbei ist, man wird nicht automatisch weitergeleitet.
Wie kann ich dies einstellen?

1 Answer

0 votes
by SoSci Survey (304k points)

Nach 4 Minuten kommt allerdings nur der Hinweis, dass die Zeit vorbei ist, man wird nicht automatisch weitergeleitet.

Für Meldung und Weiterleitung ist folgender Code verantwortlich:

function weiter() {
  // Eine Meldung anzeigen (optional)
  alert("Die Zeit ist vorbei.");
  // Den Teilnehmer zur nächsten Seite weiterleiten
  SoSciTools.submitPage(13);
}

Die Funktion SoSciTools.submitPage() akzeptiert und erwartet keinen Parameter, die 13 wird hier also ignoriert. Dennoch sollte der Code dazu führen, dass nach 4 Minuten dasselbe passiert, als würden Sie auf den "Weiter" Knopf klicken. Es sollte also zur nächsten Seite weiter gehen.

Falls nicht, beachten Sie bitte einmal die Debug-Information, die vor und nach den 4 Minuten angezeigt wird (zum Testen können Sie das natürlich mal auf 5 Sekunden reduzieren) und posten Sie diese ggf.

by s212490 (190 points)
Danke, es funktioniert jetzt

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

...