理论上,“。focus()”方法应该有效。如果正在接收“焦点”的事物也不会获得可访问性焦点,则该问题将发挥作用。Android辅助功能服务只能关注可访问性,而可访问性也是可聚焦的。
不幸的是,您不能直接从Javascript操作AccessibilityFocus,而只能从焦点。话虽这么说,当您使用Android且某些内容需要焦点时,这通常表明可访问性焦点也将与焦点一起移至该项目。用话语提示来说,这就是Tab导航的工作方式,“辅助功能焦点”仅跟随输入焦点。这不是完美的,但是可以合理地期望Focus和AccessibilityFocus希望相同。并非总是如此:出于充分的理由,EditTexts在TalkBack中可以处于准聚焦/未聚焦状态,这可能是因为您可能需要与屏幕键盘交互,而该字段仍具有光标(输入焦点)。
如果满足以下条件:
您的元素具有可访问性您的元素具有重点A11yFocusable和可聚焦的东西是相同的,而不仅仅是后代(非常重要)。您可以通过在Android设备监视器中进行浏览轻松确认上述三件事。仔细检查您是否没有将某个对象(例如元素的子对象)集中在您希望获得的可访问性上。
如果之后,您在该事物上调用了.focus(),但它不起作用,则说明您实际上在用于呈现HTML /Javascript内容的Web视图中发现了一个错误,那么您将无能为力关于它。
解决方法如标题所示,AndroidTalkback未注册该onFocus事件。我知道该onFocus事件从未注册过,因为屏幕阅读器使用的是特殊类型的可访问性焦点。那么,我们如何才能驱动/操纵可访问性焦点,从而为用户提供更好的体验?
我在这里有一个示例:https ://codesandbox.io/s/r54j2mqrl4。因此,此处console.log('hello!')未在移动AndroidTalkback中为我注册,但是已在台式机Mac OSX(未启用屏幕阅读器)上正确注册。我正在使用Tab键进行导航。
是否有类似onFocus事件可用于Android Talkback的可访问性焦点?
预先感谢您的宝贵时间。
设备和版本 :
移动Android对讲:Samsung Galaxy Tab S2,Android 7.0版,Google Chrome 62.0.3202.84
桌面Mac OSX:macOS Sierra 10.12.6,Google Chrome 61.0.3163.100