0 votes
ago in SoSci Survey (dt.) by s059552 (290 points)

In einem Fragebogen müssen Keystrokes der Teilnehmenden gespeichert werden. Hierfür verwende ich bisher folgendes Script und hatte hierfür zuvor die interne Variable A402_01 verwendet, um die Arrays zu loggen:

<script>
  class KeystrokeLogger {
    constructor(outputId) {
      this.events = [];
      this.outputEl = document.getElementById(outputId);
      this.handleKey = this.handleKey.bind(this);
    }

    start() {
      document.addEventListener('keydown', this.handleKey);
      document.addEventListener('keyup', this.handleKey);
    }

    stop() {
      document.removeEventListener('keydown', this.handleKey);
      document.removeEventListener('keyup', this.handleKey);
    }

    handleKey(e) {
      if (e.repeat) return;

      this.events.push({
        type: e.type,
        key: e.key,
        code: e.code,
        ts: e.timeStamp
      });

      this.scheduleOutput();
    }

    scheduleOutput() {
      if (this.outputPending) return;
      this.outputPending = true;

      requestIdleCallback(() => {
        if (this.outputEl) {
          this.outputEl.value = JSON.stringify(this.events);
        }
        this.outputPending = false;
      });
    }

    clear() {
      this.events = [];
      if (this.outputEl) this.outputEl.value = '';
    }
  }

  const keystrokelogger = new KeystrokeLogger('A402_01');
  keystrokelogger.start();
</script>

Dieses Format sprengt nun natürlich schnell das 64 KB limit. In anderen Forumbeiträge hatte ich bereits gesehen, dass der Fragetyp "Datei-Inhalte übertragen" verwendet werden sollte. Leider finde ich jedoch keine Dokumentation zur Funktionsweise dieses Fragetypens. Könnten Sie mir freundlicherweise zeigen, wie ich dieses Script zusammen mit dem Fragetypen nutzen kann?

Alternativ gäbe es vielleicht noch die Möglichkeit das 64 KB Limit auf unserem privat-gehosteten Server anzuheben? Jedoch habe ich in der Serververwaltung keine Einstellung hierfür gefunden.

Danke und herzliche Grüße

1 Answer

0 votes
ago by SoSci Survey (361k points)

Leider finde ich jedoch keine Dokumentation zur Funktionsweise dieses Fragetypens

Wenn man die Frage in die Fragebogen-Seite einbindet, dann kann man ihr per JavaScript ein BLOB-Element übergeben, welches direkt als Datei ins Upload-Verzeichnis geschrieben wird. Ein Beispiel dafür finden Sie, wenn Sie die "Audio-Recorder" Vorlage als Frage erstellen. Suchen Sie dort im Code nach sendBLOB().

lternativ gäbe es vielleicht noch die Möglichkeit das 64 KB Limit auf unserem privat-gehosteten Server anzuheben?

Nein, das Limit wird durch den Datentyp vorgegeben, welchen SoSci Survey in MySQL zum Speichern der Antworten verwendet.

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

...