Hallo liebes SoSci Survey Team,
ich möchte nach technischer Hilfe bei einem lab.js-Crash auf iOS bitten. Im folgenden beschreibe ich mein Experiment, den genauen Fehler und meine Theorie, warum es zum Absturz kommt.
Ich habe eine lab.js-Studie in JavaScript handgeschrieben und in einen Fragebogen eingebunden (ich bin mir aber sicher, dass das gleiche Problem auch bei einem aus dem lab.js-Builder exportierten Experiment auftreten wird). Die Studie hat auf Chrome, Firefox und Safari sowohl auf Desktop- als auch auf Mobilgeräten fehlerfrei funktioniert.
Auf einem alternativen Browser für iOS (Ecosia-Browser Version 8.1.0.66 auf iOS 16.1) konnte das Experiment allerdings wegen einer Exception nicht geladen werden, der Bildschirm hing auf "Gleich geht es weiter" fest.
Ich habe den Stacktrace analysiert und herausgefunden, dass die lab.js-Variablen (z.B. "lab") nicht definiert sind. Als ich mir die serverseitig gerenderte HTML-Datei, in der das Experiment eingebettet ist, näher angesehen habe, ist mir folgendes aufgefallen:
Im src-Attribut des script-Tags werden die "&" zur Trennung der HTTP-Get-Parameter als "&" kodiert, allerdings sollten sie nach meinem Verständnis als "&" oder "%26" kodiert werden. Meine Vermutung ist, dass Chrome, Firefox und Safari erkennen, dass das & ein "&" in der URL darstellen soll. Es ist allerdings sehr gut möglich, dass z.B. ältere Versionen von WebKit die URL falsch lesen, eine 404 anstelle des Skripts zurückbekommen und die lab.js-Variablen deswegen nicht definiert sind.
Ich habe mein Experiment so modifiziert, dass es aus dem DOM alle script-Tags extrahiert, die "&" durch "&" ersetzt und das entsprechende Script nachlädt, bevor das Experiment gestartet wird. Damit konnte ich den Absturz beheben, das Experiment hat in allen Browsern, in denen es vorher funktioniert hat sowie in dem Browser, wo es abgestürzt hat, fehlerfrei funktioniert.
Allerdings wäre es aus meiner Sicht besser, das Problem serverseitig zu lösen, als durch DOM-Modifikation. Vermutlich muss nur der Code, der die script-Tags zusammensetzt, geändert werden.
Können Sie die Anfrage an das Entwicklerteam weiterleiten? Ich stehe gerne auch für Rückfragen zur Verfügung.
Vielen Dank und freundliche Grüße!