VoiceOver 光标与键盘焦点
VoiceOver Cursor vs Keyboard Focus
使用 VoiceOver 导航时,我的键盘焦点似乎直接跳过了“保存到投资组合”按钮。
键盘导航和 VoiceOver 光标都跟随其他按钮,但是,当我尝试导航到“保存到投资组合”按钮时,键盘焦点(蓝色突出显示)不会跟随,我不能select 它或单击它作为 link。有谁知道为什么或我需要做什么来解决这个问题?
保存到投资组合代码:
const DropDown = ({ sxStyle, sxTiny, buttonLabel, options }) => {
const [open, setOpen] = useState(false)
const toggleStyle = sxTiny ? sxStyle.tiny : sxStyle.toggle
const wrapperStyle = sxTiny ? sxStyle.tinyWrapper : sxStyle.wrapper
return (
<div
className='wrapper'
sx={wrapperStyle}
role='button'
onBlur={(event) => {
if (!event.currentTarget.contains(event.relatedTarget)) {
setOpen(false)
}
}}
>
<Button
variant='primary'
className='dropdown-toggle'
aria-label='Add to Portfolio'
onClick={() => setOpen(!open)}
sx={toggleStyle}
>
{ buttonLabel }
</Button>
<div
role='listbox'
sx={open ? sxStyle.optionsOpen : sxStyle.optionsClosed}>
{ options }
</div>
</div>
)
}
最好更换你的
<div role=button>
语义正确
<button type="button">
如果这不可能,您可以添加 tabindex="0" 的属性,但除非您添加 keydown 侦听器和处理程序,否则按钮将不会按空格键激活。
使用 VoiceOver 导航时,我的键盘焦点似乎直接跳过了“保存到投资组合”按钮。
键盘导航和 VoiceOver 光标都跟随其他按钮,但是,当我尝试导航到“保存到投资组合”按钮时,键盘焦点(蓝色突出显示)不会跟随,我不能select 它或单击它作为 link。有谁知道为什么或我需要做什么来解决这个问题?
保存到投资组合代码:
const DropDown = ({ sxStyle, sxTiny, buttonLabel, options }) => {
const [open, setOpen] = useState(false)
const toggleStyle = sxTiny ? sxStyle.tiny : sxStyle.toggle
const wrapperStyle = sxTiny ? sxStyle.tinyWrapper : sxStyle.wrapper
return (
<div
className='wrapper'
sx={wrapperStyle}
role='button'
onBlur={(event) => {
if (!event.currentTarget.contains(event.relatedTarget)) {
setOpen(false)
}
}}
>
<Button
variant='primary'
className='dropdown-toggle'
aria-label='Add to Portfolio'
onClick={() => setOpen(!open)}
sx={toggleStyle}
>
{ buttonLabel }
</Button>
<div
role='listbox'
sx={open ? sxStyle.optionsOpen : sxStyle.optionsClosed}>
{ options }
</div>
</div>
)
}
最好更换你的
<div role=button>
语义正确
<button type="button">
如果这不可能,您可以添加 tabindex="0" 的属性,但除非您添加 keydown 侦听器和处理程序,否则按钮将不会按空格键激活。