osgsm.io
HomeNotesJavaScript で エスケープキー(Esc)を押したときにモーダルを閉じる

JavaScript で エスケープキー(Esc)を押したときにモーダルを閉じる

Published Feb 17, 2025
Updated Mar 12, 2025

モーダルはエスケープキー押下で閉じられる方が親切。モーダル系のライブラリはこれを実装していることが多く、キーボードを使ってブラウジングする人にとってもやさしい設計にできる。

方法としては、 window'keydown' イベントをリッスンし、イベントハンドラーで closeDialog() のようなモーダルを閉じる処理を行う。

TypeScript
const onKeyDownEsc = (event: KeyboardEvent) => {
	if (!isOpen || event.key !== 'Escape') return;
	event.preventDefault();
	closeDialog();
};
 
window.addEventListener('keydown', onKeyDownEsc);

ここでは、isOpen 変数でモーダルの状態を管理しているとする。

もし isOpen でない場合や押下されたキーが 'Escape' でない場合は、アーリーリターンする。


参考