要求:在每个页面上更改屏幕阅读器必须阅读整个页面内容.
我们使用firefox + NVDA进行测试,因为角度没有"更改页面",我们尝试以下内容使其在更改状态时读取整个页面:
aria-live="assertive"
Run Code Online (Sandbox Code Playgroud)
这在很大程度上是读取我们网站中文本的变化,但它只读取它的添加内容,在我们的例子中我们有一个表被填充,ng-repeat它读取了添加的信息,但没有任何上下文(它没有说明是哪一行或列正在阅读)
另一个问题是形式,当被角度填充时,屏幕阅读器将在它们被角度填充之前读取它,这已经解决了$timeout但仍然在aria-live读取更改时它会跳过某些部分,如果我们添加aria-atomic到强制读取,我们有一些选择有多个选项,那些被阅读(所有这些,我们有超过一百个选项).这不是屏幕阅读器读取的方式,它们只读取前十个选项或单击它们时可见的选项.
请记住,如果没有任何aria-live或aria-atomic,当您以角度更改状态时,不会通知用户任何更改.
几乎放弃后我们决定可能我们的重点是错误的,我们需要让每个州都有自己的页面,所以我们使用了以下内容:
function ForceNVDARead() {
$(window).on('hashchange', function () {
location.reload();
});
}
Run Code Online (Sandbox Code Playgroud)
对于URL中的每个更改,这将强制重新加载.这很有效,一切都被正确阅读,我们几乎认为这解决了一切.除此之外导致从客户端到我们的服务器的双重请求.
有没有办法让NVDA读取像常规页面加载一样的角状态的内容,而不必强制重新加载页面?
请不要仅仅使用咏叹调角色或类似的东西,这对我们已经有了它们,我们需要应用程序在更改状态时读取所有内容.
感谢任何帮助,我们即将放弃,并在没有角度的情况下重新启动项目,因为我们无法实现可访问性要求.
我试图在 .net 4.7 web.config 文件中转换以下几行:
Run Code Online (Sandbox Code Playgroud)<mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="C:\folder"/> </smtp> </mailSettings>
到核心 2 appsettings.json 配置,如果可能的话:
{
"mailSettings": {
"DeliveryMethod ": "SpecifiedPickupDirectory",
"pickupDirectoryLocation": "C:\folder"
}
}
Run Code Online (Sandbox Code Playgroud)
但我不确定这在核心 2 中是否可行,或者是像在 .net 4.7+ 中那样无法通过配置完成的事情。任何反馈/提示/解决方法表示赞赏。
所以不要有这些:
<svg class="icon-user">
<use href="LONGFILENAME.svg#icon-user">
</use>
</svg>
<svg class="icon-user2">
<use href="LONGFILENAME.svg#icon-user2">
</use>
</svg>
Run Code Online (Sandbox Code Playgroud)
我希望我的SVG在某种程度上是全局的或以某种方式引用,只需像我这样使用我的代码:
<svg class="icon-user">
<use href="#icon-user">
</use>
</svg>
<svg class="icon-user2">
<use href="#icon-user2">
</use>
</svg>
Run Code Online (Sandbox Code Playgroud)
这可能吗?