编程语言
首页 > 编程语言> > javascript – Android对讲没有注册onFocus for web.如何使用Android Talkback操纵辅助功能焦点?

javascript – Android对讲没有注册onFocus for web.如何使用Android Talkback操纵辅助功能焦点?

作者:互联网

正如标题所说,Android Talkback没有注册onFocus事件.我知道onFocus事件从未被注册,因为屏幕阅读器使用的是特殊类型的accessibility focus.那么,我们如何驱动/操纵可访问性焦点以便为用户提供更好的体验?

我在这里有一个例子:https://codesandbox.io/s/r54j2mqrl4.所以这里的console.log(“你好!”)没有在移动Android Talkback中为我注册,但是它在桌面mac OSX上正确注册(没有打开屏幕阅读器).我正在使用tab键进行导航.

是否有类似onFocus事件的东西用于Android Talkback的可访问性焦点?

提前谢谢您的时间.

设备和版本:

移动Android对讲:三星Galaxy Tab S2,Android 7.0版,谷歌Chrome 62.0.3202.84

桌面Mac OSX:macOS Sierra 10.12.6,谷歌浏览器61.0.3163.100

解决方法:

理论上“.focus()”方法应该有效.如果收到“焦点”的东西也不会获得可访问性焦点,那么问题就会发挥作用. Android辅助功能服务只能是辅助功能焦点,也可以访问辅助功能.

不幸的是,您不能直接从Javascript操纵辅助功能焦点,只关注焦点.这就是说,当你在Android中并且某些东西请求焦点时,这通常表明可访问性焦点也会随着焦点移动到该项目.在TalkBack术语中,这是Tab导航的工作方式,Accessibility Focus只是跟随输入焦点.它并不完美,但Focus和Accessibility Focus想要保持一致是合理的期望.虽然并非总是如此:在TalkBack中,EditTexts可以处于quazi聚焦/未聚焦状态,原因很简单……当字段仍然有光标(输入焦点)时,您可能需要与屏幕键盘进行交互.

如果以下情况属实:

>您的元素是可聚焦的可访问性
>你的元素是可聚焦的
> A11yFocusable和可聚焦的东西是相同的,而不仅仅是后代(非常重要).

您可以通过在Android设备监视器中探索来轻松确认上述三件事.三重检查你没有关注你所设想的可访问性焦点的东西(比如元素的孩子).

如果在那之后你在这个东西上调用了.focus(),并且它不起作用,你基本上在你用来呈现HTML / Javascript内容的webview中发现了一个错误,并且没有什么是你可以做的关于它.

标签:javascript,android,accessibility,reactjs,talkback
来源: https://codeday.me/bug/20190705/1389865.html