【发布时间】:2016-09-23 09:28:58
【问题描述】:
我正在创建a website for a reading service for the blind and visually impaired,我正在使用javascript(用jquery)将一些东西打印到页面加载后的一些页面。
将屏幕阅读器读取在页面加载后用jQuery打印到页面的内容?
从this page - “一般来说,[屏幕读者]访问DOM(文档对象模型),并且他们使用浏览器API(应用程序编程接口)来获取所需的信息。”
我们知道 jQuery 是一个 DOM 操作库。
所以问题变成了.. 屏幕阅读器是否会获取整个 DOM 的副本,然后解析并阅读它?或者他们是否读取 DOM,与 jQuery 工作的相同?
这是我使用javascript的一个页面的一个例子。它使用一个函数,确定我们在空中播放的哪个程序,然后打印程序的名称和收听它的链接。
<div id="now-playing-div"></div>
<script>
// invoke the audio-reader javascript library
$( document ).ready( function() {
var callback = nowPlaying; // catalog, schedule, podcasts, archive or nowPlaying
var selector = '#now-playing-div';
makeAudioReaderPage(callback, selector);
});
</script>
所以,如果您可以看到,如果屏幕阅读器没有读取JavaScript / jQuery打印到#Now-Play-div的内容,那么它将只读它。然后,我们开始收到一些困惑的倾听者的电子邮件,想知道现在玩的链接发生了什么。
所以今天早上我添加了这个:
<div id='no-js'>Please enable JavaScript to receive this content.</div>
<script>
$( document ).ready( function() {
$('#no-js').toggle();
});
</script>
但如果问题不是需要启用 JavaScript(a recent survey shows 99% 的屏幕阅读器用户都启用了 JavaScript),那么问题就没有解决,而且会变得更糟,因为现在屏幕阅读器用户会认为 JavaScript 未启用。
怎么办??
【问题讨论】:
-
您必须咨询特定的屏幕阅读器提供商。没有办法回答这个问题 - 他们应该查询实时 dom,因此会看到任何变化。但是如果一个特定的查询一次并缓存,那么它可能不应该被使用。 “静态”页面不再存在,并在页面的立即死亡/无用/陈旧的副本上工作非常毫无意义/愚蠢。 span>
-
初始测试的好方法 - 安装NVDA,免费屏幕阅读器。如果您使用的是 Mac,请尝试 VoiceOver。您还可以下载并运行JAWS 的试用版。获取video overview of NVDA 或keyboard shortcuts for all。之后,探索ARIA live regions。
标签: javascript jquery accessibility screen-readers jaws-screen-reader