Saya tahu ini seharusnya tidak terlalu sulit, tetapi saya tidak dapat menemukan jawabannya di Google.
Saya ingin mengeksekusi sepotong javascript yang akan menghapus fokus dari elemen apa pun itu tanpa mengetahui sebelumnya elemen mana yang menjadi fokus. Ini harus bekerja pada firefox 2 dan juga browser yang lebih modern.
Apakah ada cara yang baik untuk melakukan ini?
javascript
focus
Andres
sumber
sumber
Jawaban:
Menjawab:
document.activeElement
Untuk melakukan apa yang Anda inginkan, gunakan
document.activeElement.blur()
Jika Anda perlu mendukung Firefox 2, Anda juga dapat menggunakan ini:
sumber
document.activeElement.blur()
adalah cara terbaik untuk mencapai efek ini..focus()
dan kemudian.blur()
sesuatu yang sewenang-wenang di halaman Anda. Karena hanya satu elemen yang dapat memiliki fokus, itu ditransfer ke elemen itu dan kemudian dihapus.sumber
overflow: clip
elemen gaya. Tapi Anda bisa menggunakan bidang yang sudah ada di halaman. Atau buat satu hanya untuk tujuan itu dan hapus lagi.Berfungsi salah pada IE9 - ini mengaburkan seluruh jendela browser jika elemen aktif adalah badan dokumen. Lebih baik memeriksa kasus ini:
sumber
Tidak ada jawaban yang diberikan di sini yang sepenuhnya benar ketika menggunakan TypeScript, karena Anda mungkin tidak tahu jenis elemen yang dipilih.
Karena itu ini akan lebih disukai:
Saya selanjutnya akan mengecilkan hati menggunakan solusi yang disediakan dalam jawaban yang diterima, karena kekaburan yang dihasilkan bukan bagian dari spesifikasi resmi, dan bisa pecah kapan saja.
sumber
dummyElem.focus () di mana dummyElem adalah objek tersembunyi (mis. memiliki zIndex negatif)?
sumber
Anda dapat memanggil window.focus ();
tetapi memindahkan atau kehilangan fokus terikat untuk mengganggu siapa pun yang menggunakan tombol tab untuk berkeliling halaman.
Anda dapat mendengarkan kode kunci 13, dan mengabaikan efeknya jika tombol tab ditekan.
sumber
Dengan jQuery saja:
$(this).blur();
sumber
this
perlu elemen fokus, sementara pertanyaannya secara eksplisit menyatakan OP tidak tahu elemen fokus sebelumnya.