チャット形式でエンドユーザーとクライアントがマッチングするサービスを提供しており、
「①質問を表示する、②回答を入力する」がワンセットで繰り返し表示される仕組み。
回答入力後フォーカスを外すことで次の質問を表示できるが、
フォーカスを外せないエンドユーザーが続出した為、
最下部でスクロールした時はフォーカスを外す処理を実装した。
jQuery
$(window).on('touchend', function(){ // ー①
// 現状のスクロールの位置+要素が表示されている領域の高さ
const windowHeight = $(window).scrollTop() + window.innerHeight; // ー②,③
// 表示されている要素の高さ
const scrollHeight = $('html').get(0).scrollHeight; // ー④
// 以下の式が成り立つ時、現在当たっているフォーカス外す
if (scrollHeight < windowHeight) { // ー⑤
$(':focus').blur();
}
});
主な動作の流れ
①スマフォ画面から手が離れた瞬間にイベント発火。
②現在表示されている要素の高さを取得。(図1-A)
③現状のスクロールの位置取得。(図1-B上)
④スマフォ画面の表示領域の高さ取得。(図1-B下)
※この表示領域にキーボードは含まれない。
⑤「A < B」が成り立つ時、現在当たっているフォーカスを外す。
