- 1. 概要
- 2. タブアクティブ時にフォーカスをあてる
- 3. やってみる
- 4. 参考サイト
1. 概要
表題は、いささか言葉足らずになります。
正確には、「ブラウザのタブがアクティブになったときに、特定の『INPUT』のテキストを選択して、フォーカスをあてる」ということがやりたかったのでした。
2. タブアクティブ時にフォーカスをあてる
これは、例えば、次のようなタグと。
<form name="request" action="" method="POST">@csrf
このテキストが
<input type="text" id="select_text" name="select_text" style="text-align: center;" value="このテキスト" size="34">
</form>
次のような「javascript」のコードで実現できます。
const input = document.getElementById('select_text');
document.addEventListener('visibilitychange', () =>
{
if (document.visibilityState === 'visible')
{
input.focus(); // フォーカスを当てる
input.select(); // テキストを選択状態にする
}
});
ちなみにこのスクリプトは、「head」部に仕込んではだめです。
「input」が展開された後に記述しないと、正常に動作できません。
「input」の「id」を使用して、「document.getElementById()」を使っています。
一応、「name」も使用できるようで、「document.getElementsByName()」という書き方もできるようですが。
「ChatGPT」くんのいうことにゃ。
「id」は、コンテンツ内で、ユニークであることが必須で、「name」は同じものが複数あること可能であるそうで。
「name」を使う場合は。
const inputsByName = document.getElementsByName('select_text');
const inputByName = inputsByName[0];
てな感じで、いったん配列にして取り直すことが必要になるので、「id」を使う方が、誤りが少ないとのことでした。
3. やってみる
上記に仕込んであります。
本ページのソースを見れば、わかるかと思います。
ブラウザのタブをいったん別のタブへ移動して、ここへ戻ってくると上記のテキストが選択状態になって、フォーカスがあたっているはずです。
4. 参考サイト
本ページは、「ChatGPT」くんを参考にさせていただきました。
|
|