我正在創建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