【发布时间】:2018-01-23 13:43:22
【问题描述】:
为了提供可访问性,我需要在我的 Cordova 应用程序中进入屏幕时聚焦元素。通过一些技巧,我设法将焦点设置在一个元素上,但该元素会立即失去焦点(通过侦听“模糊”事件来验证)并且丢失发生在 Apples VoiceOver、Androids Talkback 启动或用户可以接受之前任何动作。
我已经尝试将焦点设置包装在 $timeout 中,以强制它在所有内容都呈现后发生,但这根本没有帮助。在我看来,Cordova、angular 1 或 ionic 中的某些东西会在其自身干扰 m 代码时产生一些令人讨厌的焦点魔法。
有没有人经历过类似的事情并找到了解决方法?
【问题讨论】:
-
什么元素占据了焦点?
document.addEventListener('focus', function(e) { console.log(e.target) }, true) -
body 元素获得焦点,其中还包括 ng-app 属性:
<body ng-app="constructionkit" class="grade-a platform-webview platform-cordova platform-android platform-android6 platform-android6_0 platform-ready statusbar-translucent topbar-default modal-open" tabindex="-1"> <!-- Lots of stuff --> </body>如果两者都尝试:删除并设置 body 上的 tabindex="-1" 属性。没有区别
标签: javascript angularjs cordova ionic-framework accessibility