我正在创建a website for a reading service for the blind and visually impaired,并且我正在使用JavaScript(使用jQuery)在页面加载后向某些页面打印一些内容。屏幕阅读器和Javascript
页面加载后,屏幕阅读器是否会读取使用jquery打印到页面的内容?
从this page - “一般来说,[屏幕阅读器]访问DOM(文档对象模型),他们使用浏览器API(应用程序编程接口)来获取他们需要的信息。”
我们知道jQuery是一个DOM操作库。
所以问题就变成了......屏幕阅读器会获取整个DOM的副本,然后解析并阅读它?或者他们阅读的是与jQuery相同的DOM吗?
下面是我使用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的打印到#现在扮演-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,并且因此可以看到任何变化,但是如果一个特定的人查询一次并缓存,那么它可能不应该被使用。“静态”页面不再存在了,并且处理一个页面的立即死/无用/陈旧的副本是非常毫无意义/愚蠢 –
有一个很好的方法来初步测试 - 安装[NVDA](http://www.nvaccess.org/), Windows的免费屏幕阅读器。如果您在Mac上,请尝试使用VoiceOver。您也可以下载并运行[JAWS]的试用版(http://www.freedomscientific.com/Downloads/JAWS)。获取[NVDA的视频概述](https://www.youtube.com/watch?v=Vx1vSd5uYS8)或[所有人的键盘快捷键](https://www.paciellogroup.com/blog/2015/01/basic -screen阅读器的命令换无障碍测试/)。之后,探索[ARIA生活区域](https://www.paciellogroup.com/blog/2014/03/screen-reader-support-aria-live-regions/)。 – aardrian