URL of experiment: RL [PsychoPy]
Description of the problem: After the experiment running on Mac and PC on Chrome, I asked a few folks to try to run the experiment on their own computers. One on a Mac using Safari got this error message:
I was able to reproduce it in Safari by waiting too long to respond to a trial. Knowing that was the issue, I then waited too long on purpose for a trial in Chrome and get a slightly different error:
I believe the error occurs when this code is hit:
Python
if len(key_resp.keys) == 0:
no_resp = True
feedback_text = "Please respond faster!"
else:
no_resp = False
feedback_text = ""
JS
if ((key_resp.keys.length === 0)) {
no_resp = true;
feedback_text = "Please respond faster!";
} else {
no_resp = false;
feedback_text = "";
}
key_response is defined initially as:
key_resp = new core.Keyboard({psychoJS: psychoJS, clock: new util.Clock(), waitForStart: true});
and in the trials, key_response is updated as:
// *key_resp* updates
if (t >= 0.0 && key_resp.status === PsychoJS.Status.NOT_STARTED) {
// keep track of start time/frame for later
key_resp.tStart = t; // (not accounting for frame time here)
key_resp.frameNStart = frameN; // exact frame index
// keyboard checking is just starting
psychoJS.window.callOnFlip(function() { key_resp.clock.reset(); }); // t=0 on next screen flip
psychoJS.window.callOnFlip(function() { key_resp.start(); }); // start on screen flip
psychoJS.window.callOnFlip(function() { key_resp.clearEvents(); });
}
frameRemains = 0.0 + 1.5 - psychoJS.window.monitorFramePeriod * 0.75; // most of one frame period left
if (key_resp.status === PsychoJS.Status.STARTED && t >= frameRemains) {
key_resp.status = PsychoJS.Status.FINISHED;
}
if (key_resp.status === PsychoJS.Status.STARTED) {
let theseKeys = key_resp.getKeys({keyList: ['f', 'j'], waitRelease: false});
_key_resp_allKeys = _key_resp_allKeys.concat(theseKeys);
if (_key_resp_allKeys.length > 0) {
key_resp.keys = _key_resp_allKeys[_key_resp_allKeys.length - 1].name; // just the last key pressed
key_resp.rt = _key_resp_allKeys[_key_resp_allKeys.length - 1].rt;
key_resp.duration = _key_resp_allKeys[_key_resp_allKeys.length - 1].duration;
// was this correct?
if (key_resp.keys == corr_ans) {
key_resp.corr = 1;
} else {
key_resp.corr = 0;
}
}
}
I could use some eyeballs to help with code. This is how the response was defined in Builder: