首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >辅助功能:对讲、WebView和用户区域设置

辅助功能:对讲、WebView和用户区域设置
EN

Stack Overflow用户
提问于 2014-03-18 16:38:38
回答 1查看 860关注 0票数 9

我已经开发了一个包含Webview的应用程序。我想让我的应用程序完全可访问,所以对于webview元素,我想让TalkBack以完全可访问的方式读取html元素,如“标题”、“横幅”、"EditText“。

我已经看到WebView中的TTS过程是通过Chromium AccessibilityInjector.java类的JS注入来完成的。这会将此脚本注入到页面中,该页面只包含英文消息。结果是,当设备使用另一种语言时,TTS以英语读取这些html元素。

现在我不能调试或扩展chromium,那么我如何才能让TTS根据用户的语言环境来阅读我的页面呢?

编辑:顺便说一下,我正在使用jQuery移动版。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-18 14:23:04

以防有人遇到这个问题:我不得不应用一个丑陋的变通方法来克服这个问题。每当加载页面并启用TalkBack时,我都会重新注入包含要读取的文本的javascript变量及其本地化的副本。例如,对于西班牙语文本:

代码语言:javascript
复制
view.loadUrl("javascript:window.setTimeout(function(){" +
                "window.console.log(\"Injecting messages.\");" +
                "cvox.TestMessages[\"chromevox_input_type_text\"] = {message: \"cuadro de edición\"};" +
                "cvox.TestMessages[\"chromevox_input_type_radio\"] = {message: \"botón de opción\"};" +
                "cvox.TestMessages[\"chromevox_selected\"] = {message: \"seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_unselected\"] = {message: \"no seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_radio_selected_state\"] = {message: \"seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_radio_unselected_state\"] = {message: \"no seleccionado\"};" +
                "cvox.TestMessages[\"chromevox_input_type_submit\"] = {message: \"botón\"};" +
                "cvox.TestMessages[\"chromevox_input_type_button\"] = {message: \"botón\"};" +
                "cvox.TestMessages[\"chromevox_tag_button\"] = {message: \"botón\"};" +
                "}, 2000)");

请注意,我在注入变量之前插入了一个超时--这是为了防止chromevox在注入之后被注入,从而使解决方案变得无用。

我知道这是一个丑陋的补丁,但如果不访问chromium webview类,我找不到更好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22474086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档