New Features
- Added an option to specify an event handler for
on_close
injsPsych.init()
. This event is triggered when the user leaves the page. It can be used to save the data and/or state of the experiment just before the window is closed and the data is lost (#324). - Added
jsPsych.getProgressBarCompleted()
, which returns the current value of the progress bar. Works for automated and manual control mode of the progress bar (#538). - Video files will now preload. Thanks @andytwoods ! (#408, #535).
- The survey-text plugin now supports a
required
parameter. (#460). - Individual data values in the
data
parameter can now be functions that are evaluated at the start of the trial (#562). - Created three new plugins for video stimulus with different response options:
video-keyboard-response
,video-button-response
, andvideo-slider-response
. Thanks @designatednerd ! (#636; #622). - The video plugins now supports setting the playback rate. Thanks @r-b-g-b ! (#590).
- Added cloze test plugin. Thanks @sprengholz ! (#555).
- A custom label can be specified for the automatic progress bar. Thanks @retowyss ! (#609).
- All survey plugins now support
randomize_question_order
parameter, which randomly reorders all questions (#305). - The various
image-
plugins now allow for setting the height and width of the image by the parametersstimulus_height
andstimulus_width
. The parametermaintain_aspect_ratio
can be used to automatically resize one dimension when specifying the other (#560). - The slider plugins now support a parameter called
require_movement
. When set to true, the continue button is disabled until the slider has been moved (#573). - The slider plugins now have a parameter called
slider_width
which can be used to set the width of the slider in pixels (#631). - Added a new plugin that supports a more versatile set of html form elements, survey-html-form. Thanks @jansim ! (#602).
- Added
jsPsych.randomization.shuffleAlternateGroups()
which allows for shuffling based on a group membership, ensuring that items from each group are spaced evenly and in a consistent group order (#528). - Added
alternate-groups
option to sampling methods for timeline variables (#528). - Added a parameter to jsPsych.init to control the width of the experiment display,
experiment_width
(#635). - The survey-likert plugin now has a parameter
scale_width
to specify the width of the likert scales in pixels (#633). - All the survey plugins now support a
name
parameter in thequestions
array. This parameter controls the name of the response in the data, replacing the default ofQ0
,Q1
, etc. (#608).
Changes
- Dropped support for
Date.now()
as a method for measuring RT. Browser support forperformance.now()
is now widespread (#492). .variance()
and.sd()
now calculate sample variance and standard deviation instead of population variance and standard deviation (#601).- In nested timeline structures,
data
properties that do not conflict between a nested node and their parent node will now both be added to the data structure. Previously, only the nested node's data was added, even if the data properties were not in conflict (#391). - Added more informative error messages for some functions in the randomization module (#389).
- The
value
parameter for the survey-text plugin has been replaced withplaceholder
and the text is now used as a proper placeholder attribute (#627). - The survey-multi-select plugin
required
parameter is now specified at the question level to be consistent with other survey plugins. Proper HTML5 form validation is used to display the error message (#629). - The jspsych-RDK plugin was renamed to jspsych-rdk to be consistent with other plugins. Thanks @vrsivananda ! (#630; #575).
- Various documentation improvements and updates (#607, #524).
Bug Fixes
- Div IDs were incorrectly generated in the survey-text plugin (#576).
- The survey-text plugin was reloading the page on form submission in Safari and Edge. Thanks @nabsul ! (#610; #613).
- The survey-text plugin has proper auto focus on the first input element (#580).
- Full screen event data is now properly recorded in recent versions of Firefox (#597).
- The loading progress bar should no longer be larger than expected (#603).
- Default values were not properly used when the plugin had a nested parameter (e.g., the
questions
parameter in the varioussurvey-*
plugins). Defaults are now used as expected (#628). - The default_iti parameter in jsPsych.init() is working as intended (#632).