accessibility 相关问题

可访问性旨在使每个人都可以使用应用程序或网站,包括视力,听觉,走动或认知障碍等残疾人。

React Native 中嵌套元素的辅助功能焦点顺序不正确

我正在一个混合匹配应用程序中工作,我们在几个模块中使用 React Native 组件。在本例中,我有一个表格视图,我们在其中的一些单元格中添加了 RN 组件。 我能够启用

回答 3 投票 0

如何在 HTML 中正确禁用按钮?

可以通过设置disabled属性来禁用元素,例如使用 document.querySelector("button").disabled = true; 不过,这也有一些不利之处 可以通过设置 <button> 属性来禁用 disabled 元素,例如使用 document.querySelector("button").disabled = true; 但是,这会产生一些“不利的可用性影响”,例如导致按钮失去焦点并无法通过键盘导航进行访问。有些用户会看到按钮被禁用的视觉提示,例如因为表单中可能缺少某些内容。对于依赖键盘导航和屏幕阅读器的用户来说,获取此信息会困难得多。 禁用按钮的好方法是什么? 可以使按钮的行为就像被禁用一样,而无需实际禁用它。您可以使用 aria-disabled 属性 来执行此操作: /** * Adds eventListeners to the buttons. * Here, not the action is added but the guard. */ document.querySelectorAll("button").forEach(button => { button.addEventListener("click", actionGuard(action)) }); /** * This guard prevents the action if the button * is disabled or event handling was prevented. * @param {EventListener} action * @returns {EventListener} */ function actionGuard(action) { return (evt) => { if (evt.target?.ariaDisabled) evt.preventDefault(); else if (!evt.defaultPrevented) action(evt) } } /** * The action you want your button to perfom. * @type {EventListener} */ function action(evt) { console.log("Event callback triggered:", evt.type) } button[aria-disabled="true"] { opacity: .65; cursor: not-allowed; } <button type="button">Enabled</button> <button type="button" aria-disabled="true">Disabled</button> 基于 aria-disabled 属性,按钮的样式已更改,以便您仍然可以获得该按钮处于非活动状态的视觉提示。此外,只有当 aria-disabled 属性不为 true 并且事件尚未被阻止时,守卫才会允许执行该操作。为了提高可用性,您可以考虑向此禁用按钮添加工具提示,告知用户该按钮被禁用的原因。添加工具提示时,请务必通过添加 aria-live 元素来帮助屏幕阅读器用户。

回答 1 投票 0

可访问的值,0:00 作为持续时间而不是时间,1/12/2023 作为日期,等等

我有一些 html 文本,NVDA 屏幕阅读器(通过语音查看器)显示为以下文本 第 9 行 星期二 28/11/23 第一个小时 6:00 第二个小时 0:00 第三个小时 0:00 第 7 栏 并大声朗读...

回答 1 投票 0

在 Jetpack Compose 中,如何检查屏幕是否已重新组合?

我希望能够在 Text 对象上设置辅助功能焦点,但只有在它变得可见时(通过记住的可变状态布尔值)。这意味着屏幕需要完成重新启动...

回答 1 投票 0

用户不会收到有关如何打开农业网格上的列菜单的通知

用户只需使用键盘上的 CTRL 和 ENTER 键即可打开列菜单。 我遇到的问题是用户没有收到如何仅使用键盘打开列菜单的通知。如果用户您...

回答 2 投票 0

Axe 开发工具引发不必要的违规行为

所以我的导航栏具有以下结构: 点击查看代码片段 我遵循 https://www.w3.org/WAI/ARIA/apg/patterns/menubar/examples/men 中存在的相同结构...

回答 1 投票 0

使用 PDFBox 标记 PDF

是否可以使用PDFBox创建带标签的PDF(PDF/UA)?看起来 PDFBox 有一个 API(包 org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf),但我找不到任何教程...

回答 2 投票 0

如何在 HTML 中正确标记单选按钮网格?

请注意,在这种情况下,“适当地”在语义上是有意义的,并且在屏幕阅读器查看时会给出良好的结果。 假设我有一个问题列表,每个问题都有

回答 1 投票 0

<strong>中<em>或<em>中<strong>重要吗?

这重要吗在 一些文字 还是 中的 ? 一些... 这重要吗<strong>在<em> <p><strong><em>Some text</em></strong></p> 或 <em> 中的 <strong>? <p><em><strong>Some text</strong></em></p> 哪个在语义上是正确的并且更容易理解? 更新: 屏幕阅读器在这两种情况下会如何表现? 语法正确,但语义不正确。可以说,<strong> 是 <em> 的“高阶”形式。如果您正在寻找 <b> 和 <i> 的效果,请使用 CSS。请记住,不要因为元素的外观而选择元素,而是因为它们的含义。 只要您不混淆结束标签的顺序,您列出的两种方式在标记方面都是完全正确的。这是不正确的: <p><em><strong>Some text</em></strong></p> 如果您关心语义,则应避免在元素上同时使用 em 和 strong。 Strong:渲染为强调强 文字 (通过) 如果您关心有效的 HTML,这两种解决方案都很好且有效。 根据w3strong是强烈强调。这意味着 em 和 strong 不应在语义上一起使用,因为 strong 已经是 em。 如果您认为强强调应该是粗体斜体,我认为您应该添加一个 css 声明,在其中将强强调设置为粗体斜体。 从视觉效果角度来看,这并不重要。 在语义上,这很重要,因为您在同一元素(某些文本)中使用强调和强烈强调。这与在某些地方使用 h1 是一样的,只是因为您想要大文本,而不是因为它们是标题。 EM:表示强调。 STRONG:表示更强的强调。 来源 短语元素的呈现 取决于用户代理。一般来说, 可视化用户代理呈现 EM 文本 斜体和粗体文本。 **语音合成器用户代理可能 改变合成参数,例如 相应的音量、音调和速率。 所以要小心。使用 CSS 来完成视觉效果,而不是标记。 在 (X)HTML5 中,定义/含义是: em:表示其内容的重音强调(改变句子的含义); strong:代表其内容的强烈重要性(不会改变句子的含义)。 所以这些元素原则上可以一起使用。 要获得想法,请考虑大声朗读文本(不过取决于语言):em可能会改变语调(重音),strong可能会增加响度。 我认为从语义上来说,使用 <strong><em>foo</em></strong> 或 <em><strong>foo</strong></em> 没有什么区别;至少我在规范中找不到任何相关内容。

回答 6 投票 0

使用 Angular CDK FocusKeyManager 处理选项卡

我正在使用 CDK FocusKeyManager 来管理基于键盘交互的项目列表。各个项目可以获得本机焦点。这工作正常,我可以通过选项卡浏览项目...

回答 1 投票 0

SwiftUI 按钮操作的辅助功能文本

我有一个用例,我想在单击 SwiftUI 按钮后为 VoiceOver 提供不同的文本。 初始值不同,可以使用accessibilityLabel或accessibilityValue进行设置,例如...

回答 1 投票 0

使用辅助功能应用程序(适用于视障人士)从用户输入(在其他应用程序中)读取文本

在旨在帮助视障人士的应用程序中,我声明无障碍服务如下: 在旨在帮助视障人士的应用程序中,我声明无障碍服务如下: <manifest ..."> <application android:name=".application.TxExApplication" ... android:theme="@style/Theme.AppCompat.Light" tools:targetApi="31"> <activity android:name=".activity.MainActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.Light"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".service.TextExpansionAccessibilityService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" android:label="@string/accessibility_service_label" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility_service_config" /> </service> </application> <uses-permission android:name="android.permission.INTERNET" /> </manifest> My AccessibilityService 尝试读取当前光标所在文本字段的最后一个单词(我尚未使用 Webview 应用程序进行测试,但目前我的重点是本机应用程序)。 public class TxExAccessibilityService extends AccessibilityService { @Override protected void onServiceConnected() { AccessibilityServiceInfo info = new AccessibilityServiceInfo(); info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; info.feedbackType = AccessibilityServiceInfo.FEEDBACK_ALL_MASK; info.notificationTimeout = 100; info.packageNames = null; setServiceInfo(info); } @Override public void onAccessibilityEvent(AccessibilityEvent event) { if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) { AccessibilityNodeInfo source = event.getSource(); if (source == null) { return; } List<CharSequence> textList = event.getText(); for (CharSequence text : textList) { if (text != null && text.length() > 0) { Log.d("AccessibilityService", "Retrieved text: " + text); String [] words = text.toString().split("\\s+"); String last = words[words.length-1]; ... } } } } @Override public void onInterrupt() { } } 我已在设置中为我的应用程序启用了辅助功能,但与我过去使用过的辅助功能应用程序不同,我的应用程序不会从用户输入中读取文本。有谁知道如何在现代版本的 Android 操作系统中读取用户输入的文本? 我认为您在问题中分享的代码没有任何问题,因为它在我这边运行良好,与 代码实验室。 当我输入EditText的文本时,我可以得到以下logcat: D/AccessibilityService: Retrieved text: asfsdafasdfasdfsdfg 所以我会给出一些可能会被错过的提示: 不要忘记将 android:canRetrieveWindowContent="true" 添加到您的 accessibility_service_config,例如: <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityFeedbackType="feedbackGeneric" android:accessibilityFlags="flagDefault" android:canPerformGestures="true" android:canRetrieveWindowContent="true" /> 每次重新运行应用程序时,都必须重新打开应用程序的设备辅助功能设置。

回答 1 投票 0

关于全链接卡的辅助功能

我面临着如何使我的网络项目中的 HTML 卡尽可能易于访问的问题。 我发现并关注了这篇非常好的文章: 包容性组件.design/cards/ 我使用了 javascript

回答 1 投票 0

如何处理 SVG 中的多个工具提示

我有一个带有标题元素的 SVG,以及带有自己的空标题的多边形,希望防止将鼠标悬停在多边形上时出现父标题,因为我有一个自定义

回答 1 投票 0

如何通过c#代码启用“鼠标键”辅助功能?

我正在尝试使用 user32.dll 方法启用鼠标辅助功能“鼠标键”,但我无法弄清楚我做错了什么。 我正在使用下面的代码来启用它,但它不是

回答 1 投票 0

在 Android 系统设置中安装条目的现代方法

我有一个作为服务运行的辅助功能应用程序,这意味着我不将其作为应用程序运行。我想在系统设置页面添加一个菜单,并提供一个视图供用户配置...

回答 1 投票 0

辅助功能扫描仪问题:Flutter 应用程序没有可读标签

为什么我对flutter app获取消息进行了可访问性分析,如下: 该商品可能没有屏幕阅读器可读的标签。 我的小部件有以下代码: 语义( 标签:“登录页面。”...

回答 2 投票 0

Flutter 语义可访问性问题 [flutter]

我正在尝试向使用 Dart/Flutter 创建的登录网页添加一个类似于 HTML h1 标签的标题。这是为了遵守 WCAG 无障碍指南。为了实现这一目标,我正在利用

回答 1 投票 0

在 IE11 中通过表单提交进行导航时,JAWS 开始在页面中间宣布内容

我遇到了一些奇怪的事情,其中具有表单和相当最小布局的页面在初始加载时被 IE11 中的 JAWS 16 和 18 正确读取。但是,当从活动加载该页面时...

回答 2 投票 0

棋盘上可访问的方块有 5 种不同的视觉状态

我想制作一个易于访问的棋盘。一个正方形 (div) 可以有 5 种不同的视觉状态: 未选择且未着色 已选择 3 种不同的颜色(例如绿色、红色和蓝色) 颜色...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.