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

Hallo liebes Team,

Ich habe auf einer Seite folgenden PHP-Code:

replace('%remain1%', 12);  // Der Teilnehmer hat 12 Sekunden für die Bearbeitung

Ich habe hier auf den längeren Code verzichtet, mit dem man nicht die Zeit mit Neuladen der Seite neustarten kann. Das liegt daran, dass zuvor Items randomisiert werden und es Wechselwirkungen mit dem goToPage()-Befehl geben würde.

Mein Java-Skript sieht wie folgt aus:

<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) {
  // Timer für automatische Weiterleitung starten
  window.setTimeout(weiter, %remain1% * 1000);
});
 
// -->
</script>

Dieses ist als HTML-Code in den Fragen gespeichert.

Leider funktioniert die automatische Weiterleitung nicht. Was kann ich noch tun?

1 Answer

0 votes
by SoSci Survey (352k points)

Dieses ist als HTML-Code in den Fragen gespeichert.

Und er ist auch unter dem replace() auf die Seite gezogen?

Wenn es nicht daran liegt, dass der Code nicht auf der Seite eingebunden ist und nicht an der Reihenfolge, dann sehen Sie doch bitte mal nach, was die JavaScript-Fehlerkonsole des Browsers sagt.

Wenn Sie das Problem damit nicht eingrenzen können, erstellen und posten Sie bitte mal einen Pretest-Link direkt (!) zu einer betroffenen Seite.

by s332653 (110 points)
Ja, der HTML-Code ist auf der Seite unter dem PHP-Code. Erst danach kommt auch das Item. Wenn ich meinen Code gesondert in einem Fragebogen ausprobiere, funktioniert auch alles. Deswegen denke ich, liegt es nicht an irgendwelchen Problemen mit JavaScript. Womöglich liegen Wechselwirkungen mit anderen Befehlen in meiner Studie vor. Folgendes ist ein Link direkt zur betroffenen Seite (34): https://umfragenup.uni-potsdam.de/VAST_2/?act=xi9JwB5mkH43EB04MIksRnvI
Soweit ich gesehen habe, läuft jetzt auch ein Timer und versucht zumindest die Seite zu wechseln. Dann scheint es wirklich Probleme mit vorherigen Codes zu geben. Kann es evtl. am folgenden liegen:
question('ZG01');  // Zettel aus dem Zufallsgenerator ziehen
$pages = valueList('ZG01', NULL, 'label');  // Liste der Seiten auslesen

// Die 54 gezogenen Seiten werden in drei Blöcke à 18 Seiten aufgeteilt.
// Die Funktion array_slice() entnimmt die gewünschten Abschnitte:
$block1 = array_slice($pages, 0, 18);       // Seiten 1–18
$block2 = array_slice($pages, 18, 18);      // Seiten 19–36
$block3 = array_slice($pages, 36, 18);      // Seiten 37–54

// Die Gesamtseitenreihenfolge wird aus den Teilblöcken und den Code-/Eingabe-Seiten zusammengesetzt
$pageOrder = array_merge(
  ['code1'],
  $block1,
  ['eingabe1'],
  ['code2'],
  $block2,
  ['eingabe2'],
  ['code3'],
  $block3,
  ['eingabe3']
);

debug('Finale Seitenreihenfolge: ' . implode(', ', $pageOrder));


// Seitenabfolge anwenden, danach folgt automatisch die Seite 'Pause'
setPageOrder($pageOrder, 'Vermeidung1');
by SoSci Survey (352k points)
Danke für den Pretest-Link. Was möchten Sie mit dem Timer denn erreichen? Wenn Sie die Bearbeitungszeit begrenzen möchten, sollten sie m.E. die Antwortpflicht entfernen.

Testen Sie doch mal, ab wo der Timer nicht funktioniert. Wenn sie einen replizierbaren Fall haben, dann posten sie gerne mal die URL des Interviews aus der Adresszeile des Browsers.

Ich sehe keinen Zusammenhang mit der Definition der Seitenabfolge, denn der JavaScript-Code steht ja direkt auf der Seite, wo es weiter gehen soll. Aber wenn es generell immer 12 Sekunden sein sollen, können Sie sich den Platzhalter und das replace() sparen und einfach die Zeit in den JavaScript-Code schreiben. Hier eine komprimierte Variante.

<script>
SoSciTools.attachEvent(window, "load", function(evt) {
  // Timer für automatische Weiterleitung starten
  window.setTimeout(SoSciTools.submitPage, 12000);
});
</script>
by SoSci Survey (352k points)
PS: Auf der Seite mit IB05 finde ich keinen Timer-Code in der Seite. Womöglich fehlt das Script auf einigen Seiten einfach?

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

...