Nie ma określonej listy, to zależy od przeglądarki. Jedyny standard, jaki mamy, to HTML poziomu 2 DOM , zgodnie z którym jedynymi elementami, które mają focus()
metodę, są HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement i HTMLAnchorElement. Pomija to w szczególności HTMLButtonElement i HTMLAreaElement.
Dzisiejsze przeglądarki definiują focus()
HTMLElement, ale element faktycznie nie skupi się, chyba że jest jednym z:
- HTMLAnchorElement / HTMLAreaElement z href
- HTMLInputElement / HTMLSelectElement / HTMLTextAreaElement / HTMLButtonElement, ale nie przy pomocy
disabled
(IE faktycznie daje błąd, jeśli spróbujesz), a przesyłanie plików ma nietypowe zachowanie ze względów bezpieczeństwa
- HTMLIFrameElement (chociaż skupienie go nie robi nic użytecznego). Inne elementy osadzania również, być może, nie przetestowałem ich wszystkich.
- Dowolny element z
tabindex
Istnieją inne subtelne wyjątki i dodatki do tego zachowania w zależności od przeglądarki.
element.isContentEditable === true
są również skupialne. Zauważ, że IE -10 (11+?) Może skupić dowolny element z blokiem wyświetlania lub tabelą (div, span itp.).Tutaj mam selektor CSS w oparciu o bobince „s odpowiedzi , aby wybrać dowolną zmianę ostrości element HTML:
lub trochę piękniej w SASS:
Dodałem go jako odpowiedź, ponieważ tego właśnie szukałem, gdy Google przekierowało mnie do tego pytania Stackoverflow.
EDYCJA: Jest jeszcze jeden selektor, który można ustawić:
Jest to jednak stosowane bardzo rzadko.
źródło
<a href="foo.html">Bar</a>
pewnością można go ustawić, ponieważ jest toa
element posiadającyhref
atrybut. Ale twój selektor go nie obejmuje.tabindex="-1"
czy nie uczynić elementem unfocusable, to po prostu nie może być skupiona przez tabulatorem. Nadal może się skupiać, klikając go lub programowo za pomocąHTMLElement.focus()
; to samo dla każdej innej liczby ujemnej. Zobacz: developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/…Tworzę listę SCSS wszystkich elementów możliwych do aktywacji i pomyślałem, że to może komuś pomóc ze względu na pozycję Google w tym pytaniu.
Kilka rzeczy do zapamiętania:
:not([tabindex="-1"])
na,:not([tabindex^="-"])
ponieważ generowanie tego jest całkowicie prawdopodobne-2
. Lepiej bezpiecznie niż przykro, prawda?:not([tabindex^="-"])
do wszystkich innych selektorów z możliwością ustawiania ostrości jest całkowicie bezcelowe. Podczas korzystania[tabindex]:not([tabindex^="-"])
już zawiera wszystkie elementy, z którymi będziesz negować:not
!:not([disabled])
ponieważ wyłączone elementy nigdy nie mogą być ustawiane. Ponownie więc nie ma sensu dodawać go do każdego elementu.źródło
Biblioteka ułatwień dostępu ally.js zapewnia tutaj nieoficjalną listę opartą na testach:
https://allyjs.io/data-tables/focusable.html
(Uwaga: na ich stronie nie ma informacji o częstotliwości wykonywania testów).
źródło
Może ten może pomóc:
zwracana wartość: prawda = sukces, fałsz = niepowodzenie
Reff: https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/activeElement https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
źródło
http://www.w3schools.com/cssref/sel_focus.asp
źródło