JavaScriptでフォーカスを確認する際に便利な`hasFocus()`メソッドについて、基本的な使い方から実践的な例まで詳しく解説します。
hasFocus()メソッドとは
`hasFocus()`は、HTML要素が現在フォーカスを持っているかどうかを確認できるJavaScriptのメソッドです。このメソッドは真偽値(true/false)を返します。
基本的な使い方
// 基本的な構文
document.hasFocus()使用例:
// フォーカスの状態を確認
if (document.hasFocus()) {
console.log('ドキュメントにフォーカスがあります');
} else {
console.log('ドキュメントにフォーカスがありません');
}実践的な使用例
1. フォームの入力監視
const inputField = document.querySelector('input');
setInterval(() => {
if (document.hasFocus() && document.activeElement === inputField) {
console.log('入力フィールドにフォーカスがあります');
}
}, 1000);2. 自動保存機能の実装
const textArea = document.querySelector('textarea');
textArea.addEventListener('blur', () => {
if (!document.hasFocus()) {
// フォーカスが外れた時に自動保存
saveContent(textArea.value);
}
});
function saveContent(content) {
// 保存処理
console.log('コンテンツを保存しました:', content);
}3. ユーザーの活動状態の監視
let userActive = true;
setInterval(() => {
if (!document.hasFocus()) {
userActive = false;
console.log('ユーザーは非アクティブです');
} else {
userActive = true;
console.log('ユーザーはアクティブです');
}
}, 2000);注意点
- `hasFocus()`はドキュメント全体のフォーカス状態を確認します
- ブラウザのタブやウィンドウの切り替えでも`false`を返します
- 特定の要素のフォーカス状態を確認する場合は`document.activeElement`と組み合わせて使用することをお勧めします
まとめ
`hasFocus()`メソッドは、ユーザーのインタラクションを監視する際に非常に便利なツールです。フォーム入力の管理やユーザーの活動状態の追跡など、様々な用途に活用できます。適切に使用することで、よりインタラクティブなWebアプリケーションの開発が可能になります。