Tidak ada daftar pasti, terserah browser. Satu-satunya standar yang kami miliki adalah DOM Level 2 HTML , yang menurutnya satu-satunya elemen yang memiliki focus()
metode adalah HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement, dan HTMLAnchorElement. Ini terutama menghilangkan HTMLButtonElement dan HTMLAreaElement.
Browser hari ini menentukan focus()
HTMLElement, tetapi sebuah elemen tidak akan benar-benar fokus kecuali salah satu dari:
- HTMLAnchorElement / HTMLAreaElement dengan href
- HTMLInputElement / HTMLSelectElement / HTMLTextAreaElement / HTMLButtonElement tetapi tidak dengan
disabled
(IE benar-benar memberi Anda kesalahan jika Anda mencoba), dan unggahan file memiliki perilaku yang tidak biasa untuk alasan keamanan
- HTMLIFrameElement (meskipun memfokuskannya tidak ada gunanya). Elemen penyematan lainnya juga, mungkin, saya belum menguji semuanya.
- Elemen apa pun dengan a
tabindex
Mungkin ada pengecualian dan penambahan halus lainnya untuk perilaku ini tergantung pada browser.
element.isContentEditable === true
fokus juga. Perhatikan bahwa IE -10 (11+?) Dapat memfokuskan elemen apa pun dengan blok tampilan atau tabel (div, span, dll.).Di sini saya memiliki CSS-pemilih berdasarkan bobince 's jawaban untuk memilih elemen HTML focusable:
atau sedikit lebih indah di SASS:
Saya telah menambahkannya sebagai jawaban, karena itulah, apa yang saya cari, ketika Google mengarahkan saya ke pertanyaan Stackoverflow ini.
EDIT: Ada satu pemilih lagi, yang dapat difokuskan:
Namun, ini sangat jarang digunakan.
sumber
<a href="foo.html">Bar</a>
tentu saja bisa fokus karena itu adalaha
elemen yang memilikihref
atribut. Tetapi pemilih Anda tidak memasukkannya.tabindex="-1"
tidak tidak membuat elemen unfocusable, itu hanya tidak dapat difokuskan oleh tabbing. Itu masih dapat menerima fokus dengan mengkliknya atau secara terprogram denganHTMLElement.focus()
; sama untuk nomor negatif lainnya. Lihat: developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…Saya membuat daftar SCSS dari semua elemen yang dapat fokus dan saya pikir ini mungkin membantu seseorang karena peringkat Google pertanyaan ini.
Beberapa hal yang perlu diperhatikan:
:not([tabindex="-1"])
menjadi:not([tabindex^="-"])
karena sangat masuk akal untuk menghasilkan-2
entah bagaimana. Lebih baik aman daripada menyesal bukan?:not([tabindex^="-"])
ke semua penyeleksi yang dapat fokus lainnya sama sekali tidak ada gunanya. Saat menggunakannya[tabindex]:not([tabindex^="-"])
sudah termasuk semua elemen yang akan Anda tolak:not
!:not([disabled])
karena elemen yang dinonaktifkan tidak akan pernah bisa fokus. Jadi sekali lagi tidak berguna untuk menambahkannya ke setiap elemen.sumber
The ally.js perpustakaan aksesibilitas memberikan daftar resmi, berdasarkan uji-sini:
https://allyjs.io/data-tables/focusable.html
(NB: Halaman mereka tidak mengatakan seberapa sering tes dilakukan.)
sumber
Mungkin yang ini bisa membantu:
nilai balik: true = sukses, false = gagal
Reff: https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/activeElement https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
sumber
http://www.w3schools.com/cssref/sel_focus.asp
sumber