jsPsychはパソコンだけでなく,スマートフォンでも実施することができます。しかしながら,パソコンのみに最適化している場合やパソコンでのみ(またはスマートフォンでのみ)実施してもらいたい場合も多いでしょう。そこで,OSによって条件分岐する必要がでてきます。OSを取得して,そのOSに合わせて挙動を変えることを目指します。OSの取得にはplatform.jsが利用できます。以下のgithubから入手してください。
htmlまたはjsでplatform.jsを読み込んでから使用します。以下のコードを実行すると,スマートフォンの場合は,timelineにスマートフォン用ページを追加します。スマートフォン用ページではメッセージの表示後に,実験を中止(jsPsych.endExperiment()
)します。スマートフォン以外の場合(else
以下)は実験を開始するページを入れています。実際に使う場合には,else
以下でtimeline
に実験用ページを追加していくことになるかと思います。なお,スマートフォンと書いていますが,厳密にはOS(Android or iOS)で判定しているので,スマートフォン以外のタブレットもOSによっては中止対象に含まれています。なお,platform.jsではブラウザによる分岐も実装可能です。
//スマートフォンでの終了画面
const smartPhonePage = {
type: 'html-keyboard-response',
stimulus: '申し訳ありません。スマートフォンでは実施できません。パソコンにて実施してください。',
trial_duration: 5000,
choices: jsPsych.NO_KEYS,
on_finish: function (data) {
jsPsych.endExperiment('');
}
};
//PCでの終了画面
const pcPage = {
type: 'html-keyboard-response',
stimulus: '実験を開始します。',
trial_duration: 5000,
choices: jsPsych.NO_KEYS
}
//timelineを作成
let timeline = [];
//OSを取得
const osName = platform.os.toString().toLowerCase();
//スマートフォンの場合
if (osName.indexOf('android') !== -1 | osName.indexOf('ios') !== -1)
{
timeline.push(smartphonePage);
}
//スマートフォン以外の場合
else
{
timeline.push(pcPage);
}
jsPsych.init({
timeline: timeline
})
参考
JavaScriptでブラウザとOSを判定する2つの方法 - Qiita
© 2019 Masanori Kobayashi