vscode 快速选择登录对话框:焦点移动可以得到改善,

dojqjjoe  于 3个月前  发布在  Vscode
关注(0)|答案(5)|浏览(48)
  1. 打开设置同步
  2. 获取以下对话框
    按下 tab - 焦点移动到复选框。再次按下 tab,焦点移动到另一个复选框。
    理想情况下,第一个标签页应该将焦点移动到 "Sign in and Turn on" 按钮上,而不是复选框上。
qv7cva1a

qv7cva1a1#

VoiceOver似乎不再在更改前后读取描述了...我们可能需要回退#122054 ... @isidorn,你能在你的设备上尝试一下吗?

qqrboqgw

qqrboqgw2#

是的,我可以复现这个问题。

如果在 #122054 更改之前 VoiceOver 没有读取描述,那么还原就没有意义。或者我误解了什么?

这里的问题是我们使用 aria-activedescendent 来告诉屏幕阅读器哪个元素是活动元素,然后根据这个信息,屏幕阅读器会读取。

如果有一种方法可以在屏幕阅读器读取的标签之外附加一个标签,那就太好了。@joanmarie 你可能对如何实现这一点有提示吗?所以 A 包含 B ,浏览器焦点在 A 上,Aactivedescendent 指向 B。有没有一种方法可以让 A 向屏幕阅读器读取的内容添加一些内容?

@TylerLeonhardt 如果没有很好的方法,我们将不得不使用 aria alert 来宣布占位符

q9rjltbz

q9rjltbz3#

我也很担心,如果我将焦点切换到 Sign in and Turn on 按钮上,可能会影响快捷键绑定:
vscode/src/vs/base/parts/quickinput/browser/quickInput.ts
第999行到第1008行 in 358b28f
| | if(!visibilities.inputBox){ |
| | //我们需要将焦点移动到树中以正确检测输入框不可见时的快捷键绑定(快速导航) |
| | this.ui.list.domFocus(); |
| | |
| | //如果启用了多选,则将焦点设置为列表中的第一个元素 |
| | if(this.canSelectMany){ |
| | this.ui.list.focus(QuickInputListFocus.First); |
| | } |
| | } |
如果在 #122054 更改之前 VoiceOver 没有读取描述,那么还原就没有意义。
你是对的。
无论如何,我想提一下这个问题,但仍然想听听 @joanmarie 的意见:

wsxa1bj1

wsxa1bj14#

我恐怕需要更多的上下文信息。😄

  1. 描述和占位符是什么?这两者是否相同?
  2. 当这些事情应该何时读取时,每次活动后代发生变化吗?仅第一次?还是其他情况?

在此期间,我寻找占位符并找到了一个具有角色组合框的输入,这给Orca带来了一些麻烦,因为它收到了(或/或没有收到)可访问事件。也许这与这个占位符/描述有关?
输入显示为“选择一个帐户登录”,当我在它和登录源列表之间使用Tab键时,Orca什么也不说。以下是原因:当焦点在列表中时,我按Shift+Tab进入输入,我得到了两个可访问性事件:

object:state-changed:focused(0, 0, 0)
	source: [list item | Sign in with Microsoft]
	application: [application | code-insiders]
object:state-changed:focused(1, 0, 0)
	source: [list item | Sign in with Microsoft]
	application: [application | code-insiders]

第一个是放弃焦点的活动后代,第二个是相同的活动后代获得焦点。因此,Orca认为没有任何变化,也不会说什么。但从视觉上看,焦点在输入中。而且当我从那个输入返回到列表时,我也得到了相同的两个事件。

上面的问题需要在发生的地方解决。无论这是否是正在讨论的相同的VO问题。再次,我需要更多的上下文信息。抱歉,谢谢!

rmbxnbpk

rmbxnbpk5#

@joanmarie

描述和占位符是什么?这两个东西是一样的吗?

抱歉,我想 @isidorn 把它们搞混了。让我提供更多的背景信息。

根据你的文本 "Select an account to sign in",我认为我们正在谈论两个不同的快速选择。我们正在谈论一个上面写着 "Please sign in to synchronize your data across devices" 的快速选择,它旁边有一个 "Sign in & turn on" 按钮。

@isidorn 之前说 placeholder ,因为 descriptionplaceholder 在视觉上似乎处于相同的位置... 但是当 input boxenabled 时,显示 placeholder ,而当 input boxdisabled 时,显示 description

设置同步禁用了此快速选择的输入,所以我们在这里纯粹讨论描述。抱歉引起困惑。

这些内容应该在什么时候读取?每次活动后代改变时?还是只读第一次?还是其他什么?

我...刚刚开始接触 A11y 相关的更改,还很菜,对不起...所以我会让 @isidorn 正确回答这个问题,但理想情况下,描述应该在快速选择显示时读取出来...所以它可能看起来像这样:

  • 点击 vscode 左下角的人图标
  • 点击 "Turn on Settings Sync.."
  • 这将带我到 "Please sign in to synchronize your data across devices" 的快速选择,屏幕阅读器在说任何关于按钮或快速选择列表的内容之前先读出 "Please sign in to synchronize your data across devices"。

有可能在你看到 "Please sign in to synchronize your data across devices" 之前的快速选择之前看到另一个快速选择...如果是这样,请告诉我那是哪个,我们可以一起讨论那个。我想解决所有快速选择的屏幕阅读器问题 :)

相关问题