标签: nvda

如何使屏幕阅读器可以看到自定义GUI控件?

我正在努力改善我的Delphi应用程序对视障用户的可访问性.我的应用程序使用许多自定义GUI组件 他们大多来自TWinControl或TGraphicControl.

使用NVDA进行测试时,我的自定义组件似乎不可见.例如,当鼠标悬停在常规Delphi VCL控件(如按钮或表单)上时,NVDA将通过读取控件的名称(或其他详细信息)来做出响应.相比之下,当我将鼠标悬停在任何自定义控件上时,NVDA根本没有响应.

如何使我的自定义组件对NVDA和其他屏幕阅读软件可见?

delphi accessibility screen-readers delphi-xe2 nvda

9
推荐指数
1
解决办法
943
查看次数

在进度条的开始和结束时大声朗读(md-progress-linear)

当出现带有进度条的对话框时,我需要使用NVDA屏幕阅读器来阅读一些消息.

在进度条的持续时间为0%时,我需要宣布: "您收到了定时消息"

进度条的持续时间为100%: "消息已过期"

使用的进度条是md-progress-linear.

html代码如下所示:

<md-dialog>
    <md-progress-linear tabindex="0" ng-if="displayProgressIndicator || timeoutValue > 0" md-mode="determinate" class="promptProgressBar" value="{{progressValue}}"></md-progress-linear>
    <md-content class="md-title dialogTitle">
        {{messageTitle}}
    </md-content>
    <md-content class="md-dialog-content">
        {{messageText}}
    </md-content>
    <div class="md-dialog-actions">
        <md-button ng-style="theme.SecondaryButton" ng-click="OnClose()" class="md-primary right">
            {{primaryActionText}}
        </md-button>
        <md-button ng-style="theme.SecondaryButton" ng-if="secondaryActionText.length > 0" ng-click="OnCancel()" class="md-primary right">
            {{secondaryActionText}}
        </md-button>
    </div>
</md-dialog>
Run Code Online (Sandbox Code Playgroud)

我看到一些滑块的工作示例,它使用aria-valuetext属性,NVDA正确读取这些文本.

我尝试在md-progress-linear元素中添加aria-valuetext属性,但不起作用.

当消息到达时,NVDA会发出蜂鸣声,但不会读取aria-valuetext.

有什么想法怎么做?

screen-readers wai-aria angularjs progress-bar nvda

9
推荐指数
1
解决办法
421
查看次数

如何防止 NVDA 自动将焦点设置在最后使用的 HTML 元素上?

我们正在我们现有的 Web 应用程序上实现可访问性。我们使用 Firefox 和 NVDA。关于我们的 Web 应用程序的小介绍:我们的 Web 应用程序是具有多个步骤的表单(第 1 步、第 2 步:这些是不同的网页)。每个步骤都有一个上一个/下一个超链接,可以转到上一个或下一个步骤。在最后一步,用户会看到他们的输入并可以提交表单或返回更改值。当用户转到上一页以更改某些值时,我们会放置一个 #anchor 以便页面转到该锚点。然后,在 Jquery 中,我将焦点放在该锚点之后的第一个可聚焦元素上。

这很好用,除非 NVDA 处于活动状态:

当 NVDA 处于活动状态时,NVDA 会强制将焦点放在用户上次访问此页面时上次使用的 HTML 元素上。就我而言,NVDA 将重点放在 Next 超链接上。NVDA 覆盖了我在 $(document).ready() 函数中设置的焦点。

我试图更改 NVDA 中的几乎所有设置,但还没有找到可以解决我的问题的设置。

我已经在网络上搜索了任何我可以设置的 ARIA 属性来告诉 NVDA 我将管理焦点和导航,但我没有在那里找到任何东西。

有谁知道如何解决这个问题?

非常感谢!

firefox accessibility focus autofocus nvda

8
推荐指数
1
解决办法
2728
查看次数

你可以强制屏幕阅读器将数字作为单独的数字读取吗?

电话号码通常都是数字,忽略了parens,破折号,加号等,因此电话号码的输入字段通常是数字.

当屏幕阅读器遇到数字输入字段时,它会将值读作整数.例如,如果我有一个美国电话号码的三个输入字段,第一个是区号(3位数),那么交换(3位数),然后是行(4位数),如果字段有123,456 ,7890(分别),我们通常认为这个数字是"一二三","四五六","七,八,九,零"的方式.

但是当屏幕阅读器遇到那些领域时,它会说"一百二十三","四百五十六","七千八百九十".

我认为屏幕阅读器用户习惯于将电话号码视为大数字(至少是我曾经说过的那些人),但这并不意味着我们无法让它变得更好.如果我向其中一个人询问他们的电话号码,他们就不会使用大数字而是使用个别数字.

我尝试了各种<input>类型,并查看了所有角色,状态和属性,但没有看到内置任何可以强制读取数字的内容.

我所能想到的是通过将视觉上隐藏的<span>包含数字作为单独的数字,<span id ='foo'> 1 2 3 </ span>,然后使用<input aria-labelledby =来编码它'富'>.

有没有更好的办法?

accessibility screen-readers voiceover nvda jaws-screen-reader

8
推荐指数
2
解决办法
6690
查看次数

使用aria-live在vue.js中向屏幕阅读器发布信息

我正在尝试获取一个vue组件,以便在我的网站上发生不同事件时动态地向屏幕阅读器发布信息.

我有它的工作,点击一个按钮将填充一个aria-live="assertive"role="alert"文本的跨度.这在第一次正常工作,但是,单击具有类似行为的其他按钮会导致NVDA在读取新文本之前两次读取前一个文本.这似乎是在vue中发生的,但是没有使用jquery的类似设置,所以我猜它与vue呈现给DOM的方式有关.

我希望有一些方法可以解决这个问题,或者更好的方法来向用户阅读没有此问题的文本.任何帮助是极大的赞赏.

这是我在工作代码沙箱中设置的一个简单组件,用于显示我遇到的问题(导航到代码的组件/ HelloWorld.vue) - 注意:根据下面的答案,此沙箱已更改.该组件的完整代码如下:

export default {
  name: "HelloWorld",
  data() {
    return {
      ariaText: ""
    };
  },
  methods: {
    button1() {
      this.ariaText = "This is a bunch of cool text to read to screen readers.";
    },
    button2() {
      this.ariaText = "This is more cool text to read to screen readers.";
    },
    button3() {
      this.ariaText = "This text is not cool.";
    }
  }
};
Run Code Online (Sandbox Code Playgroud)
<template>
  <div>
    <button @click="button1">1</button>
    <button @click="button2">2</button> …
Run Code Online (Sandbox Code Playgroud)

javascript accessibility wai-aria nvda vue.js

8
推荐指数
1
解决办法
521
查看次数

面向盲人开发者的 Android Studio

我是一名盲人 Java 开发人员。我正在接受全栈 JavaScript 培训,在 React for web 之后我们正在学习 React Native。

我想使用 Android Studio 模拟器测试代码,而不是安装在设备上。目前我无法测试我的代码,学习起来非常令人不安。

有没有解决方案可以让我在 Android Studio 模拟器窗口中使用屏幕阅读器(Windows 上的 NVDA 和 Linux 上的 orca)?因为实际上我的屏幕阅读器将模拟器窗口识别为图片,所以它无法聚焦小部件。

我想使用模拟器并使用 Android Studio 中集成的 Android 屏幕阅读器对话来测试我的代码。

我已按照此页面上的说明进行操作: https: //developer.android.com/studio/intro/accessibility

我使用 Expo 在终端上启动我的项目。我启动 Android studio 并启动 Android 模拟器。

我使用的是 NVDA,它是 32 位软件。所以我设置了 Java 8 32 位,因为它是我找到的唯一 32 位版本。我在 JRE 8 目录中使用命令行启用了 Java 访问桥,但我还安装了 Open JDK 11 64 位,这可能是一个问题。

主要问题是我无法关注 Android 模拟器窗口。

windows accessibility nvda android-studio

8
推荐指数
1
解决办法
681
查看次数

为什么 Javascript IF keyCode === Enter 键或空格键不适用于 NVDA 屏幕阅读器?

我正在研究客户网站的可访问性,并使用 JQuery/Javascript 来检测是否按下了 Enter 或空格键键盘按键,这非常有效...

$(document).addEventListener('keydown', navKeyboardHandler);

navKeyboardHandler = function(e) {
    console.log('a keyboar key was pressed'); // This does work

    if (e.keyCode === 13 || e.keyCode === 32) { // Keyboard Enter OR Spacebar pressed
        console.log('enter or spacebar key pressed ! ! !'); // This does NOT work
    }
};
Run Code Online (Sandbox Code Playgroud)

...直到我打开 NVDA 用屏幕阅读器测试键盘导航!它完全忽略了这个声明。偶尔,这会触发。就像按 10 或 20 次键盘中的一次一样。关于何时选择触发并不一致。

需要修改 IF 语句中的哪些内容才能使其正常工作?任何帮助将不胜感激。我正在 Windows 上使用 Chrome 和 Firefox 对此进行测试。

javascript keyboard accessibility screen-readers nvda

7
推荐指数
1
解决办法
7316
查看次数

aria-label,aria-labelledby和aria-describedby:在屏幕阅读器中非常不可预见的行为

我只注意到,虽然aria-label,aria-labelledbyaria-describedby属性据说每一个元素上工作(见http://www.w3.org/TR/wai-aria/states_and_properties#aria-describedby),他们似乎只是几个要素工作喜欢a,而不是例如divp在NVDA和JAWS中.

我创建了一个小的codepen来演示问题(使用浏览和焦点模式浏览它):

http://codepen.io/jmuheim/pen/avWbPe

例如,在NVDA的上a元素时,aria-labelaria-labelledby似乎在这两个浏览和对焦模式下工作.但aria-describedby仅在焦点模式下宣布,而不是在浏览模式下宣布.

对于input元素,没有任何属性似乎在浏览模式下工作,但所有属性都在焦点模式下工作.

对于像" p或"这样的"裸"文本元素div,没有一个属性似乎有效.

在JAWS中,它的行为非常相似,但至少对于p元素,当存在时aria-describedby,它宣布可以通过按"JAWS + alt + r"来读取描述.

我真的没有看到明确的模式,所以我想知道如何使用这些属性的屏幕阅读器的一般规则是什么?或者更好:为什么他们不按照规范提出的那样只为每个元素工作?

accessibility screen-readers wai-aria nvda jaws-screen-reader

6
推荐指数
1
解决办法
1469
查看次数

生成的 SVG 的替代文本

我如何为以下生成的 SVG 添加替代文本?我只能访问html。流动的SVG在div中。这是读取 Js 函数生成的数字。

<svg class="barcode" role="img" aria-labelledby="title desc" jsbarcode-format="code39" jsbarcode-value="" jsbarcode-textmargin="0" jsbarcode-width="1" width="116px" height="140px" x="0px" y="0px" viewBox="0 0 116 140" xmlns="http://www.w3.org/2000/svg" version="1.1" style="transform: translate(0,0)"><rect x="0" y="0" width="116" height="140" style="fill:#ffffff;"></rect><g transform="translate(10, 10)" style="fill:#000000;"><rect x="0" y="0" width="1" height="100"></rect><rect x="4" y="0" width="1" height="100"></rect><rect x="6" y="0" width="3" height="100"></rect><rect x="10" y="0" width="3" height="100"></rect><rect x="14" y="0" width="1" height="100"></rect><rect x="16" y="0" width="1" height="100"></rect><rect x="18" y="0" width="1" height="100"></rect><rect x="20" y="0" width="3" height="100"></rect><rect x="24" y="0" width="1" height="100"></rect><rect x="28" y="0" width="3" height="100"></rect><rect x="32" y="0" width="3" height="100"></rect><rect x="38" y="0" …
Run Code Online (Sandbox Code Playgroud)

svg accessibility alt nvda jaws-screen-reader

6
推荐指数
1
解决办法
2233
查看次数

按下选项卡时,NVDA 在初始页面加载时跳过第一个可聚焦元素

最近,在尝试使我的网站可访问时,我偶然发现了一个奇怪的问题。在设置“跳过导航”链接的过程中,我注意到当页面最初加载时(“初始加载”,我的意思是在干净的浏览器会话中,而不是刷新\xe2\x80\x94,因为 NVDA 会跟踪最后一个焦点元素的位置,因此结果将取决于该元素)。

\n

当页面加载并按下 Tab 键时,接收焦点的元素是第二个元素(正如您从下面的简化示例中看到的那样,它是站点徽标/名称(也是锚链接))。

\n

当 NVDA 未运行时,问题不会出现...一切都按预期运行,无论 NVDA 运行或不运行,Firefox 都可以正常工作,但 Chrome、Edge 和 Opera 桌面中存在问题。到目前为止我还没有在任何其他浏览器上测试过它。

\n

请注意,由于问题的性质,我没有包含可运行的代码片段或小提琴(因为屏幕上会有其他元素,并且正如我所说,这个问题仅在新的浏览器会话/干净页面加载时显示) .这是一些简化的代码来显示问题......

\n

CSS

\n
body, html {\n  margin: 0;\n}\n\n.skip-nav {\n  position: absolute;\n  margin: 10px 0 0 10px;\n  white-space: nowrap;\n  display: inline-block;\n  padding: 0;\n}\n\n.skip-nav a {\n  position: absolute;\n  left: -1000px;\n  border: 2px solid blue;\n  border-radius: 2px;\n  background-color: black;\n  padding: 5px;\n}\n\n\n/* Move link into viewport when focused */\n.skip-nav a:focus {\n  left: initial;\n}\n\nnav {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  height: 30px;\n  background-color: …
Run Code Online (Sandbox Code Playgroud)

html accessibility focus nvda

6
推荐指数
1
解决办法
5040
查看次数