The following tables show the differences between what browsers consider focusable
and what ally.js identifies using strategy: quick
.
Note that touch devices (without a physical keyboard) only show elements as tabbable (keyboard focusable), that can be navigated to through the on-screen keyboard (or "virtual keyboard").
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<html>
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
focusable inert | focusable inert |
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<body>
|
focusable inert | focusable inert | focusable inert | focusable inert | focusable inert | focusable inert | focusable inert | focusable inert |
tabbable
inert
0
E
|
tabbable
inert
0
|
tabbable
inert
0
E
|
focusable inert | focusable inert | focusable inert | focusable inert | focusable inert | focusable inert | focusable inert |
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<label for="…"> with <input id="…">
|
redirecting
-1
T
|
redirecting
-1
T
|
inert
redirecting
0
|
inert
redirecting
0
|
inert
redirecting
0
|
inert
redirecting
0
|
redirecting
-1
T
|
redirecting
-1
T
|
inert
redirecting
0
7
|
inert
redirecting
0
7
|
inert
redirecting
0
7
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
<label> with nested <input>
|
redirecting
-1
T
|
redirecting
-1
T
|
inert
redirecting
0
|
inert
redirecting
0
|
inert
redirecting
0
|
inert
redirecting
0
|
redirecting
-1
T
|
redirecting
-1
T
|
inert
redirecting
0
7
|
inert
redirecting
0
7
|
inert
redirecting
0
7
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
redirecting
-1
T
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<span style="user-modify: read-write">
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
focusable
inert
0
|
tabbable
inert
0
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<area> with <img usemap="#…">
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
tabbable
inert
0
R
|
tabbable
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
<area> with <img usemap="#…" tabindex="-1">
|
inert
0
R
|
inert
0
R
|
focusable inert | focusable inert | focusable inert | focusable inert | tabbable inert | tabbable inert | focusable inert | focusable inert | focusable inert |
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
<input> between <img usemap="#map"> and <img usemap="#map">
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
tabbable
0
50
|
focusable
tabbable
0
50
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
0
|
tabbable
0
|
<area> child of <map name="#…"> with <object type="image/png" usemap="#…">
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
focusable
inert
0
R
|
focusable
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
<area href="…"> with <object type="image/png" usemap="#…" >
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
focusable
inert
0
R
|
focusable
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
inert
0
R
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<audio controls tabindex="-1">
|
tabbable
-1
|
tabbable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
tabbable
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
tabbable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<input tabindex="-1"> within ::shadow
|
focusable | focusable | inert | inert | inert | inert |
focusable
inert
-1
R
|
focusable
inert
-1
R
|
inert | inert | inert | focusable | inert | inert | inert | inert | focusable | inert |
<input tabindex="0"> within ::shadow
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
0
R
|
tabbable
inert
0
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="2"> within ::shadow
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
2
R
|
tabbable
inert
2
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="1"> within ::shadow within ::shadow
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
1
R
|
tabbable
inert
1
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="-1"> within ::shadow[tabindex="-1"]
|
focusable | focusable | inert | inert | inert | inert |
focusable
inert
-1
R
|
focusable
inert
-1
R
|
inert | inert | inert | focusable | inert | inert | inert | inert | focusable | inert |
<input tabindex="0"> within ::shadow[tabindex="-1"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
0
R
|
tabbable
inert
0
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="2"> within ::shadow[tabindex="-1"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
2
R
|
tabbable
inert
2
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="1"> within ::shadow within ::shadow[tabindex="-1"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
1
R
|
tabbable
inert
1
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="-1"> within ::shadow[tabindex="0"]
|
focusable | focusable | inert | inert | inert | inert |
focusable
inert
-1
R
|
focusable
inert
-1
R
|
inert | inert | inert | focusable | inert | inert | inert | inert | focusable | inert |
<input tabindex="0"> within ::shadow[tabindex="0"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
0
R
|
tabbable
inert
0
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="2"> within ::shadow[tabindex="0"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
2
R
|
tabbable
inert
2
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
<input tabindex="1"> within ::shadow within ::shadow[tabindex="0"]
|
tabbable | tabbable | inert | inert | inert | inert |
tabbable
inert
1
R
|
tabbable
inert
1
R
|
inert | inert | inert | tabbable | inert | inert | inert | inert | focusable | inert |
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<iframe src="…"> without focusable content
|
tabbable
focusable
0
S
|
tabbable
focusable
0
S
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
tabbable focusable | tabbable focusable |
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
tabbable
focusable
0
S
|
tabbable
focusable
0
S
|
tabbable
focusable
0
S
|
tabbable
focusable
0
S
|
tabbable
focusable
0
S
|
focusable
0
S
|
focusable
0
S
|
<iframe src="…"> with SVG document
|
focusable | focusable |
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
tabbable focusable | focusable |
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable | focusable | focusable | focusable | focusable | focusable | focusable |
content in <iframe>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<embed>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<object type="application/x-shockwave-flash" data="…">
|
focusable
0
|
focusable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
-1
|
focusable
-1
|
inert
0
|
focusable
tabbable
0
33
|
tabbable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
<object type="application/x-shockwave-flash" data="…" tabindex="0">
|
focusable
0
|
focusable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
inert
0
|
focusable
tabbable
0
33
|
tabbable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
focusable
0
|
<object type="image/svg+xml" data="…">
|
focusable
0
C
|
focusable
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
tabbable | focusable tabbable |
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
<object type="image/svg+xml" data="…" tabindex="0">
|
focusable
0
C
|
focusable
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
tabbable | focusable tabbable |
inert host
inert
0
C
|
inert host
inert
0
C
|
inert host
inert
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
focusable
0
C
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<svg>
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<svg tabindex="-1">
|
focusable
-1
|
focusable
-1
|
tabbable
null
M
|
tabbable
null
M
|
focusable
inert
null
M
|
focusable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
null
M
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
<svg focusable="true" tabindex="-1">
|
focusable
-1
|
focusable
-1
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
null
M
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
<svg> containing <a xlink:href="…" tabindex="-1">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<svg> containing <a xlink:href="…" tabindex="0">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<rect tabindex="0">
|
tabbable
0
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
0
|
focusable
0
|
<rect tabindex="-1">
|
focusable
-1
|
focusable
-1
|
inert
null
M
|
inert
null
M
|
focusable
inert
null
M
|
focusable
inert
null
M
|
inert
null
M
|
inert
-1
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
<rect focusable="true">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<svg viewBox="…">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<rect tabindex="0"> within <svg viewBox="…"> with position outside of box
|
tabbable
0
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
0
|
focusable
0
|
<rect tabindex="-1"> within <svg viewBox="…"> with position outside of box
|
focusable
-1
|
focusable
-1
|
inert
null
M
|
inert
null
M
|
focusable
inert
null
M
|
focusable
inert
null
M
|
inert
null
M
|
inert
-1
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
<rect focusable="true"> within <svg viewBox="…"> with position outside of box
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<svg baseProfile="tiny">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<rect focusable="true"> within <svg baseProfile="tiny">
|
inert
-1
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<rect tabindex="0"> within <svg baseProfile="tiny">
|
tabbable
0
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
tabbable
0
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
0
|
focusable
0
|
<rect focusable="true" tabindex="0"> within <svg baseProfile="tiny">
|
tabbable
0
|
tabbable
0
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
tabbable
0
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
tabbable
0
|
focusable
0
|
focusable
0
|
<rect focusable="true" tabindex="-1"> within <svg baseProfile="tiny">
|
focusable
-1
|
focusable
-1
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
null
M
|
tabbable
null
M
|
tabbable
null
M
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
focusable
-1
|
<rect onfocus="">
|
tabbable
inert
0
40
|
tabbable
inert
0
40
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
tabbable
inert
0
40
|
tabbable
inert
0
40
|
tabbable
inert
0
40
|
tabbable
inert
0
|
tabbable
inert
0
40
|
focusable
inert
0
40
|
focusable
inert
0
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<svg> with <use> as content
|
inert
-1
|
inert
-1
|
inert |
tabbable
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
tabbable
inert
null
M
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<use> referencing focusable content
|
only tabbable inert | only tabbable inert | inert |
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
-1
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
only tabbable
inert
-1
S
|
inert
-1
38
|
only tabbable
inert
-1
S
|
only tabbable
inert
-1
S
|
only tabbable
inert
-1
S
|
inert
-1
|
inert
-1
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
content in <iframe>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
content in <embed>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<svg> within <object style="display: none">
|
inert | inert | inert | inert | inert | inert | inert | focusable inert | inert | inert | inert | inert | inert | inert | inert | inert | inert | inert |
content in <object>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<div> child of horizontally overflowing <div style="overflow: auto">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of overflowing <div style="overflow: hidden">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of overflowing <div style="overflow: scroll">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of overflowing <div style="overflow: visible">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of not overflowing <div style="overflow: scroll">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of not overflowing <div style="overflow: scroll">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
horizontally overflowing <div style="overflow: auto">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
tabbable
inert
-1
|
tabbable
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
E
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
overflowing <div style="overflow: hidden">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
overflowing <div style="overflow: scroll">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
tabbable
inert
-1
|
tabbable
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
overflowing <div style="overflow: visible">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
not overflowing <div style="overflow: auto">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
tabbable
inert
-1
|
tabbable
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
overflowing <section style="overflow: scroll">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
tabbable
inert
-1
|
tabbable
inert
-1
|
inert
0
|
inert
0
46
|
inert
0
46
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<div> child of <div style="overflow: scroll" tabindex="-1">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
focusable
inert
0
|
focusable
inert
0
|
focusable
inert
0
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<img ismap src="…"> child of <a href="…">
|
inert
-1
|
inert
-1
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
inert
-1
|
inert
-1
|
tabbable
inert
0
47
|
tabbable
inert
0
47
|
tabbable
inert
0
47
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<img ismap src="…"> child of <a href="…" tabindex="-1">
|
inert
-1
|
inert
-1
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
tabbable
inert
0
|
inert
-1
|
inert
-1
|
tabbable
inert
0
47
|
tabbable
inert
0
47
|
tabbable
inert
0
47
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<span> child of <a href="…" style="display: flex">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
focusable
inert
0
48
|
focusable
inert
0
48
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<span> child of <div tabindex="-1" style="display: flex">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
focusable
inert
0
48
|
focusable
inert
0
48
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<span style="display: flex">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
focusable
inert
0
48
|
focusable
inert
0
48
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<span> child of <span style="display: flex">
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
focusable
inert
0
48
|
focusable
inert
0
48
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
<span style="order: 1"> with focusable child
|
inert
-1
|
inert
-1
|
inert
0
|
inert
0
|
inert
0
|
inert
0
|
inert
-1
|
inert
-1
|
inert
0
|
focusable
inert
0
48
|
focusable
inert
0
48
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
inert
-1
|
Element | Chrome | Microsoft Edge | Firefox | IE | Opera | Safari | WebKit Nightly | Chrome Mobile (Android) | Safari (iOS) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
55.0 | 57.0 | 12.10240 | 13.10586 | 14.14393 | 15.14951 | 50.0 | 53.0 | 9.0 | 10.0 | 11.0 | 42.0 | 8.0 | 9.1 | 10.0 | 604.1 | 55.0 | 10.0 | |
<keygen …>
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert | inert |
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
inert
null
M
|
focus
event is not emitted upon the element becoming the active element (document.activeElement
).:focus
CSS pseudo class is not set on the element when it is the active element (document.activeElement
).document.activeElement
) when an element of contentDocument
or the shadowRoot
has focus.Considering the <html>
and <body>
element focusable should have no benefit to a website (unless explicitly made focusable by adding the tabindex
attribute), which is why ally.js considers the <html>
and <body>
element inert.
The <html>
element itself is not considered focusable, but some browsers may give it focus when focus is passed from browser UI to the document.
The <body>
element itself is not considered focusable, but it is has focus (i.e. is document.activeElement
) if no other element has focus.
The activation behavior of the <label>
element is not defined beyond »… should match the platform's label behavior.«
Internet Explorer redirects focus from <label>
to the referenced form control element upon mouse click, but not on script focus via element.focus()
.
The CSS property user-modify
was proposed and dropped from CSS UI Level 3 and has thus not become a standard yet.
If an <area>
element doesn't have an href
attribute, it's not a link (and should therefore not be interactive).
Shadow DOM is currently only "properly" supported in Blink based browsers (Chrome, Opera). Firefox exposes the (considerably buggy) development state behind flags.
See Can I Use.
The activeElement
is scoped within the Shadow DOM, meaning the master documet does not know which shadowed content currently has focus. To indicate that a shadowed element has focus, the element hosting the shadowed content is made the activeElement
regardless of its ability to receive focus otherwise.
Technically the content of an iframe can be accessible to script.
Because of the Same Origin Policy we can't reliably look inside <iframe>
s to determine their content, which is why ally.js considers all <iframe>
content inert
There is no API to interact with the content document of an <embed>
element
Because there is no API to dive into the content document of an <embed>
element, ally.js considers all <embed>
content inert.
Technically the content of an <object>
element can be accessible to script.
Because of the Same Origin Policy we can't reliably look inside <object>
s to determine their content, which is why ally.js considers all <object>
content inert.
The behavior of the <object>
element depends on the content it presents. The most common content types used with <object>
are SVG
and SWF
.
This element is actually tabbable (keyboard focusable).
But when tabbing to it, the <kbd>Tab</kbd> behavior for the entire document breaks, as focus remains stuck on the browser UI.
This might be related to Trident 1109008.
SVG 1.1 does not specify much in respect to accessibility. SVG 2 will bring the tabindex
attribute. SVG Tiny 1.2 knows the focusable
attribute.
The <use>
element is keyboard focusable if it references content that contains focusable elements. Blink 665121
This element is actually tabbable (keyboard focusable).
However, as soon as a <use>
element became the active element, the <kbd>Tab</kbd> effectively becomes useless, because the tabbing order cannot be navigated anymore. See this demo.
<use>
elements referencing focusable content cannot be identified by ally.js
By registering a focus
event listener the element becomes focusable. Blink 445798, WebKit 140024.
This is undetectable because elements don't provide a list of their registered event handlers.
SVG 2: Focus says:
In particular, user agents may support using keyboard focus to reveal ‘title’ element text as tooltips, and may allow focus to reach elements which have been assigned listeners for mouse, pointer, or focus events
Elements made focusable by way of adding a focus
event listener cannot be identified by ally.js
Internet Explorer turns <div>
and <span>
elements focusable when they're scrollable, but does not do the same for other sectioning or block-level elements
The ismap
attribute makes the <img>
focusable (in addition to the parent <a>
)
There is no indication that the focusability of an element can be inherited by its children, let alone triggered by flexbox layout.
Firefox may hide elements from the document's tabbing sequence if they're enclosed by two images referencing the same image map - Gecko 1116126.
This test is not about an element's focusable state, but about potentially content that's potentially hidden from the tabbing sequence.
Firefox transforms <keygen>
to <select _moz-type="-mozilla-keygen">
while parsing HTML.
The <keygen>
element is poorly supported, practically never used and has seen intent to deprecate
Because the <keygen>
element is poorly supported, ally considers all <keygen>
elements focus-relevant but not focusable.
The focusable state of content elements in Shadow DOM are not affected by tabindex="-1"
on the shadow host, contrary to the behavior of browsing contexts (<iframe>
, <object>
, <element>
).
Focus is redirected to the labeled control.
Focus is redirected to the nested labeled control.
Whenever an element within a ShadowRoot has focus, the element hosting the ShadowRoot
is considered the activeElement
of the document, as per the active element adjustment algorithm.
Firefox' Shadow DOM implementation still has a few problems: Gecko 1117535, Gecko 1117544, Gecko 1117552.
This element could not be tested in this browser.
When this element is the activeElement, the reference element <img usemap="…">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element <img usemap="…">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element <img usemap="…">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element <object usemap="…">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element <object usemap="…">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element <object type="image/svg+xml">
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element ShadowHost
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
eventWhen this element is the activeElement, the reference element ShadowHost
has the following state:
activeElement
in its context:focus
CSS pseudo class appliedfocus
event