正如标题所示,Android没有注册onFocus事件。我知道onFocus事件从未注册过,因为屏幕阅读器使用的是一种特殊类型的accessibility focus。那么,我们如何驱动/操作可访问性焦点,为用户提供更好的体验呢?
这里有一个例子:https://codesandbox.io/s/r54j2mqrl4。因此,在这里,console.log("hello!")并没有在移动安卓Talkback中为我注册,但是它在桌面mac (没有屏幕阅读器)上注册是正确的。我正在使用选项卡键导航。
对于Android的可访问性焦点,是否有类似于onFocus事件的东西?
提前谢谢你抽出时间。
设备和版本
手机安卓回放:三星Galaxy Tab S2,安卓7.0版,谷歌Chrome 62.0.3202.84
桌面macOS :macOS塞拉利昂10.12.6,谷歌Chrome 61.0.3163.100
发布于 2017-11-20 22:20:14
理论上,".focus()“方法应该有效。如果收到“焦点”的东西也不会收到可访问性焦点,问题就会起作用。Android可访问性服务只能以可访问性为重点,而这些功能也是可访问性的。
不幸的是,您不能直接从Javascript操作可访问性焦点,而只能使用焦点。这就是说,当你在Android中,当你需要焦点时,这通常意味着可访问性焦点也会和焦点一起移到这个项目上。用TalkBack术语来说,这就是Tab导航的工作方式,可访问性焦点只是跟随输入焦点。它不是完美的,但它是一个合理的期望,焦点和可访问性焦点希望是相同的。虽然并不总是: EditTexts可以在TalkBack中处于quazi聚焦/非聚焦状态,这是有理由的.您可能需要与屏幕上的键盘交互,而字段仍然有光标(输入焦点)。
如果下列情况属实:
通过在Android设备监视器中进行探索,您可以很容易地确认上述三件事。三次检查,以确保您没有将目标聚焦在您想象中的可访问性焦点上(比如元素的一个子元素)。
如果在此之后调用了.focus(),但是它不起作用,那么您实际上在用于呈现HTML/Javascript内容的can视图中发现了一个bug,没有什么可以做的。
https://stackoverflow.com/questions/47315314
复制相似问题