0 votes
in SoSci Survey (dt.) by s135553 (110 points)

Hallo,

ich habe einen Timer auf verschiedenen Seiten erstellt.
Mein Problem ist folgendes: Wenn ich in den Vorschau-Modus ab der aktuellen Seite gehe, also "Fragebogen ab der aktuellen Seite testen", funktionieren die Timer. Wenn ich aber in den Vorschau-Modus für die Umfrage von Beginn gehe, also "Fragebogen-Vorschau starten", funktionieren die Timer nicht mehr.
In der Pretest-Version funktionieren die Timer ebenfalls nicht.

Woran könnte das liegen und wie kann man es beheben?

Danke im Vorraus.

by SoSci Survey (302k points)
Worin äußert sich das "funktioniert nicht" denn genau? Wie sind Ihre Timer implementiert? Mit PHP und/oder JavaScript?
by s135553 (110 points)
Die Seite wird in dem Vorschau-Modus dann gar nicht angezeigt.

Im Feld für PHP-Code habe ich folgendes eingegeben:
if (!isset($time0))
  $time0 = time();
  registerVariable($time0);
$timer = 7;
if (time() >= $time0 + $timer)
  goToPage('next');
$remain = $time0 + $timer - time();
replace('%remain%', $remain);

Zusätzlich noch im Feld für den HTML-Code:
<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();
}
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
  // Weiter-Knopf ausblenden (optional)
 // SoSciTools.submitButtonsHide();
  // Timer für automatische Weiterleitung starten
  window.setTimeout(weiter, %remain% * 1000);
});
// -->
</script>

1 Answer

0 votes
by SoSci Survey (302k points)

Ich vermute, dass Sie die PHP-Variable $time0 auf mehreren Seiten verwendet haben.

Das registerVariable() sorgt dafür, dass die Variable beim erneuten Ladend er Seite (F5) unverändert bleibt. Aber auch dafür, dass die Variablen auf allen weiteren Seiten des Fragebogens verfügbar ist.

Das if (!isset($time0)) wiederum überspringt den Block, wenn es die Variable schon gibt. Und das ist aufgrund des registerVariable() der Fall. Deshalb greift immer dieser IF-Filter:

if (time() >= $time0 + $timer)
  goToPage('next');

Lösung: Bezeichnen Sie die Variable $time0 jedesmal anders, z.B. beim zweiten Mal $time1.

by s135553 (110 points)
Es hat funktioniert!
Vielen lieben Dank für die schnelle Hilfe!

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

...