0 votes
in SoSci Survey (dt.) by s180253 (140 points)
edited by SoSci Survey

Hallo,

ich würde gerne einen Timer einstellen auf der einen Seite, sodass die Person mindestens 30sekunden auf dieser Seite bleiben muss, bevor er weiter anklicken kann. Ich hatte diesen Code:

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 = 30;  // Der Teilnehmer hat 0,5 Minute (30 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);

Allerdings wird er dann ja automatisch weitergeleitet. Ich möchte ja aber dass er mindestens 30s oder länger drauf bleiben kann und nicht nach 30s weitergeleitet wird, sondern in Ruhe lesen kann. Wie stelle ich das ein?

Danke!

1 Answer

0 votes
by SoSci Survey (305k points)

Allerdings wird er dann ja automatisch weitergeleitet.

Nein, das goToPage() als PHP-Code hat überhaupt keinen Einfluss, wenn die Seite gerade auf dem Bildschirm des Nutzers ist. PHP-Code wird beim Erstellen der Seiten ausgeführt.

Was Sie benötigen, ist JavaScript-Code: Timer: Weiter-Knopf nach bestimmter Zeit einblenden

by s180253 (140 points)
Ah super danke!

Ich habe das jetzt mit dem Code probiert und unter Textbausteine u. Beschriftung den Code als HTML Darstellung abgespeichert und dann auf die Seite gepackt, aber das hat nicht funktioniert. Der Code ist doch eigentlich richtig so oder?

<script type="text/javascript">
<!--
// Knopf zunächst ausblenden
SoSciTools.submitButtonsHide();
// Nach Ablauf von 30 Sek = 30000 ms wieder einblenden
window.setTimeout(
  SoSciTools.submitButtonsDisplay, 30000
)
// -->
</script>
by SoSci Survey (305k points)
Ja, dieser Code sieht korrekt aus. Verschwindet der Weiter-Knopf nach Aufruf der Seite? Sie können gerne einen Pretest-Link direkt (!) zur betroffenen Seite posten, dann werfe ich einen Blick darauf.
by s180253 (140 points)
Vielen Dank, das wäre sehr hilfreich, wenn Sie sich das anschauen könnten: https://www.soscisurvey.de/nachhaltigkeit_mode/?act=qAcDpDGzGHyxVFyTh0thiGGq
Der Weiter-Knopf ist unten weiterhin sichtbar oder liegt das am Pretest-Modus mit Kommentarfunktion?
by SoSci Survey (305k points)
Wenn ich den Link aufrufe, finde ich im Quelltext der Seite nirgends "submitButtonsHide" - es scheint so als hätten Sie den JavaScript-Code schlichtweg nicht auf die Seite gezogen?
by s180253 (140 points)
Ich bin eigentlich genau der Anleitung gefolgt wie es unter Umsetzung steht (https://www.soscisurvey.de/help/doku.php/de:create:timer-display):

Umsetzung
Man benötigt lediglich einen Textbaustein mit nachfolgendem Inhalt (anzulegen unter Textbausteine u. Beschriftung, Darstellung „HTML_Code“). Diesen Textbaustein zieht man dann beim Zusammenstellen des Fragebogens in die entsprechende Fragebogen-Seite.

Ich habe links bei Fragebogen unter Textbausteine und Beschriftungen den Timer eingegeben. Dafür habe ich einen neuen Textbaustein gebaut, den benannt und die Darstellung als HTML-Code eingestellt. Dann habe ich den Code da eingegeben:
<script type="text/javascript">
<!--
// Knopf zunächst ausblenden
SoSciTools.submitButtonsHide();
// Nach Ablauf von 30 Sek = 30000 ms wieder einblenden
window.setTimeout(
  SoSciTools.submitButtonsDisplay, 30000
)
// -->
</script>
und den gespeichert. Wenn ich auf Speichern geklickt habe, hat er den Inhalt auf <p><br></p> geändert, ich war mir nicht sicher, ob das so gehört.
Unter Fragebogen zusammenstellen, habe ich dann den Baustein einfach auf die Seite gezogen, dabei ist es ja egal ob vor oder hinter die Frage bzw. Text oder?
Habe ich etwas vergessen oder falsch gemacht?
by s180253 (140 points)
Ich habe den Fehler jetzt gefunden bzw. ich habe den Code einfach unter Fragebogen zusammenstellen als HTML-Code direkt raufgeschrieben. Also wenn ich unter Fragebogen zusammenstellen das flexible Element HTML-Code auf die Seite ziehe und dann den Code da reinschreibe, hat es funktioniert. So wie es unter der Anleitung stand, hat das bei mir nicht funktioniert.

Liebe Grüße und vielen Dank für die 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

...