jsPsych/plugins/jspsych-html.js
2016-01-05 10:16:58 -05:00

53 lines
1.7 KiB
JavaScript

/** (July 2012, Erik Weitnauer)
The html-plugin will load and display an arbitrary number of html pages. To proceed to the next, the
user might either press a button on the page or a specific key. Afterwards, the page get hidden and
the plugin will wait of a specified time before it proceeds.
documentation: docs.jspsych.org
*/
jsPsych.plugins.html = (function() {
var plugin = {};
plugin.trial = function(display_element, trial) {
// default parameters
trial.check_fn = trial.check_fn || function() { return true; }
trial.force_refresh = (typeof trial.force_refresh === 'undefined') ? false : trial.force_refresh
// if any trial variables are functions
// this evaluates the function and replaces
// it with the output of the function
trial = jsPsych.pluginAPI.evaluateFunctionParameters(trial, ["check_fn"]);
var url = trial.url;
if (trial.force_refresh) {
url = trial.url + "?time=" + (new Date().getTime());
}
display_element.load(trial.url, function() {
var t0 = (new Date()).getTime();
var finish = function() {
if (trial.check_fn && !trial.check_fn(display_element)) return;
if (trial.cont_key) $(document).unbind('keydown', key_listener);
var trial_data = {
rt: (new Date()).getTime() - t0,
url: trial.url
};
display_element.empty();
jsPsych.finishTrial(trial_data);
};
if (trial.cont_btn) $('#' + trial.cont_btn).click(finish);
if (trial.cont_key) {
var key_listener = function(e) {
if (e.which == trial.cont_key) finish();
};
$(document).keydown(key_listener);
}
});
};
return plugin;
})();