Thanks for reaching out. After more debugging, I confirm that the problem was caused by the multiple filler routines. After deleting those, the experiment works smoothly regardless of the number of trials in it.
The buggy code is available upon request (I can’t seem to be able to upload js files here). I just want to explain the experimental design once again, just to be 100% clear. The experiment consisted of a standard masked priming experiment, in which after a practice session, the experiment starts with a loop called
loopTrial, in which three main routines are presented:
fmaskTrial (forward mask, lasting 500 ms),
primeTrial (prime word, lasting 33 ms) and
targetTrial (target word, lasting until response); prime and target are linked to a csv file. I additionally wanted to make sure that after each break subjects were presented with 5 filler non-words. @dvbridges and I found a non hard-coded solution for this, but it turned out not to be possible in the current version of PsychoJS, so I went for a hard-coded solution. Basically, I created multiple
breakTrial routines, each followed by a series of 5
filler routines. Each
filler routine contained 3 text components (
target_filler) and a key component
key_filler); the four components were synchronized so that they were presented in the usual order: the mask for 500 ms, the prime for 33 ms and the target (together with the key component) until response. Merging the three parts of a typical priming trial (mask, prime and target) was necessary to have a not too long code (which could have created more issues than not). Finally, the 3rd and 5th
breakTrial routines were also preceded by one additional routine each,
question_2, in which subjects were asked to answer a general question by using a text input field.
The three main routines (
targetTrial), the 2
question routines, 7
breakTrial routines and the 35
filler routines ( = 5 routines * 7 breaks) were all part of the
loopTrial loop. Text components of the question, the break and the filler routines were pre-determined (i.e., they were not linked to any external csv condition file) and were coded so that they were shown after a given number of trials in the csv file were presented (i.e., by using
trialHandler attributes and the
I know the whole architecture seems very inelegant and quite complicated but it seemed the only way to get what I needed. Hopefully you’ll figure out what in the filler routines (3+ components in one routine? multiple text components to be presented at specific times?) specifically caused the issue with Chrome. I guess this was an unusually complicated design, which hopefully may be implemented more elegantly in future when the relevant methods become available; but still I figured developers might want to know what actually is going wrong.