Position your head so that the webcam has a good view of your eyes.
Center your face in the box and look directly towards the camera.
It is important that you try and keep your head reasonably still throughout the experiment, so please take a moment to adjust your setup to be comfortable.
When your face is centered in the box and the box is green, you can click to continue.
`
},
button_text: {
type: jsPsych.plugins.parameterType.STRING,
default: 'Continue'
}
}
}
plugin.trial = function (display_element, trial) {
var start_time = performance.now();
var load_time;
if (!jsPsych.extensions.webgazer.isInitialized()) {
jsPsych.extensions.webgazer.start().then(function () {
showTrial();
}).catch(function () {
display_element.innerHTML = `
The experiment cannot continue because the eye tracker failed to start.
This may be because of a technical problem or because you did not grant permission for the page to use your camera.
`
});
} else {
showTrial();
}
function showTrial() {
load_time = Math.round(performance.now() - start_time);
var style = `
`
document.querySelector('head').insertAdjacentHTML('beforeend', style);
var html = `
`
if(is_face_detect_green()){
document.querySelector('#jspsych-wg-cont').disabled = false;
} else {
var observer = new MutationObserver(face_detect_event_observer);
observer.observe(document, {
attributes: true,
attributeFilter: ['style'],
subtree: true
});
}
document.querySelector('#jspsych-wg-cont').addEventListener('click', function () {
if(observer){
observer.disconnect();
}
end_trial();
});
}
function is_face_detect_green(){
if(document.querySelector("#webgazerFaceFeedbackBox")){
return document.querySelector('#webgazerFaceFeedbackBox').style.borderColor == "green"
} else {
return false;
}
}
function face_detect_event_observer(mutationsList, observer) {
if (mutationsList[0].target == document.querySelector('#webgazerFaceFeedbackBox')) {
if (mutationsList[0].type == 'attributes' && mutationsList[0].target.style.borderColor == "green") {
document.querySelector('#jspsych-wg-cont').disabled = false;
}
if (mutationsList[0].type == 'attributes' && mutationsList[0].target.style.borderColor == "red") {
document.querySelector('#jspsych-wg-cont').disabled = true;
}
}
}
// function to end trial when it is time
function end_trial() {
jsPsych.extensions['webgazer'].pause();
jsPsych.extensions['webgazer'].hideVideo();
// kill any remaining setTimeout handlers
jsPsych.pluginAPI.clearAllTimeouts();
// gather the data to store for the trial
var trial_data = {
load_time: load_time
};
// clear the display
display_element.innerHTML = '';
document.querySelector('#webgazer-center-style').remove();
// move on to the next trial
jsPsych.finishTrial(trial_data);
};
};
return plugin;
})();