如何使用 javascript 将信息从浏览器控制台写入 qualtrics 数据文件

How to write information from browser console into qualtrics datafile using javascript

我正在尝试将信息从浏览器控制台提取到我的 qualtrics 数据文件中。下面的代码记录了第一次击键的反应时间 ('console.log(rt)')。这些反应时间记录在我的浏览器控制台中,但我想知道如何将这些数据写入我的 qualtrics 数据文件。任何想法,将不胜感激。谢谢!

Qualtrics.SurveyEngine.addOnload(function()
{
  var pageStart = new Date(); 
  var trialstart = pageStart.getTime();
  this.hideNextButton();
  this.hidePreviousButton();
  var that = this;
  Event.observe(document, 'keydown', function keydownCallback(e) {
    var choiceID = null;
    switch (e.keyCode) {
      case 83: // 'S' was pressed
        choiceID = 1;
        break;
      case 68: // 'D' was pressed
        choiceID = 2;
        break;
    }
    if (choiceID) {
      var day = new Date();
   var trialend = day.getTime();
   let rt = trialend - trialstart;
   console.log(rt);
      Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
    }
  });
  });

已编辑脚本

Qualtrics.SurveyEngine.addOnReady(function()
{
  var pageStart = new Date(); 
  var trialstart = pageStart.getTime();
  this.hideNextButton();
  this.hidePreviousButton();
  var that = this;
  Event.observe(document, 'keydown', function keydownCallback(e) {
    var choiceID = null;
    switch (e.keyCode) {
      case 83: // 'S' was pressed
        choiceID = 1;
        break;
      case 68: // 'D' was pressed
        choiceID = 2;
        break;
    }
    if (choiceID) {
      var day = new Date();
   var trialend = day.getTime();
   let rt = trialend - trialstart;
   var trials ="${e://Field/ed_var}";
    if(trials.length > 0) trials += ",";
   Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);  
   Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
    }
  });
  });

使用:

Qualtrics.SurveyEngine.setEmbeddedData('ed_var', rt);

其中 ed_var 是先前已在调查流程中声明的嵌入变量。

此外,您应该将 addOnload 更改为 addOnReady。 addOnload 通常在按钮出现之前运行,当您尝试隐藏它们时可能会导致错误。

编辑: 如果您为调查流程中的所有循环创建嵌入式数据字段,那么您可以将它们的名称作为字段 2 传递到循环中,并将 ${lm://Field/2} 传递到您的 JavaScript:

var ed_var = "${lm://Field/2}";
...
Qualtrics.SurveyEngine.setEmbeddedData(ed_var, rt);

如果你想要一个包含逗号分隔的试验列表的变量,它将类似于:

var trials = "${e://Field/ed_var}";
if(trials.length > 0) trials += ",";
...
Qualtrics.SurveyEngine.setEmbeddedData('ed_var', trials + rt);

经过反复试验,这个解决方案终于奏效了:

Qualtrics.SurveyEngine.addOnload(function()
{
var pageStart = new Date();
var trialstart = pageStart.getTime();
this.hideNextButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
  var choiceID = null;
  switch (e.keyCode) {
    case 83: // 'S' was pressed
      choiceID = 1;
      break;
    case 68: // 'D' was pressed
      choiceID = 2;
      break;
 }
    if (choiceID) {
      var day = new Date();
   var trialend = day.getTime();
   let rt = trialend - trialstart;
  var imageID = "${lm://Field/2}";
  var RTtime = "${e://Field/ed_var}" + "|" +  imageID;
 Qualtrics.SurveyEngine.setEmbeddedData('ed_var', RTtime + rt);
   Event.stopObserving(document, 'keydown', keydownCallback);
      that.setChoiceValue(choiceID, true);
    }
  });
  });