Update for JAWS 8.0 and Higher
JAWS and Standard Windows Applications
In a standard Windows environment, JAWS monitors are visible areas for new informational updates to the screen. This process is achieved by gathering data using Microsoft Active Accessibility (“MSAA”), an application’s Document Object Model (“DOM”), and the internal Off Screen Model (“OSM”). Since this process can just as easily take place without the presence of a video card, such changes are detected at the level of the computer’s operating system. Thus, no visual component is necessary for the screen reader to validate additional output using optical recognition (except in the case of the OSM).
Although JAWS depends on the proper configuration of many Operating System (“OS”) properties to function correctly (default screen resolution, font size, color scheme, etc.), the handling of new information is relatively simple. All new content is passed automatically to the NewTextEvent function. This function compares the newly received data with the various sets of rules, options, and settings that govern how JAWS should treat new information. In addition, the NewTextEvent function announces or ignores the new content based on the result of this comparison.
JAWS and Web Pages
Unlike standard windows, the NewTextEvent function plays little or no part in handling dynamically updated content on web pages. Instead, new content is automatically passed to the DocumentLoadedEvent function. When the browser opens or refreshes a web page, JAWS queries the DOM to know when the page is completely loaded and parses the information and html tags from the text. A readable copy of the page’s content is then displayed in JAWS’ virtual buffer and superimposed over the original document. Although invisible, this virtual page can then be traversed using any of JAWS’ navigational hotkeys.
Since a page’s HTML code plays a key role in determining the virtual document’s layout, properly placed and configured HTML tags are essential (especially when building complex or semi-complex elements such as tables, group lists, tree views, etc.). For instance, a table with improperly configured cell, row, or column tags would (at best) be displayed with inconsistently aligned cells, or (at worst) be too jumbled to understand its context.
When Client-Side Content Changes
Since JAWS does not detect a page refresh or new page command when dynamic content is changed or added, it is limited in automatically re-query the DOM.
Although the JAWS DocumentLoadedEvent function is (by default) powerless to automatically trigger this action, a manual option is available. Pressing the JAWS command JAWSKey+Escape will re-query the DOM, refresh the content of JAWS’ virtual buffer, and display the new content for browsing.
According to Freedom Scientific, JAWS is limited in recognizing when dynamic page content changes. However, as an alternative, the following methods have been used to successfully force JAWS into a re-query of the DOM:
- A page refresh, redirect, or new page command.
- Changing of page source in a FRAMESET, or IFRAME.
- Change in an element’s class name
- Change in an element’s
- innerText/innerHTML property
- visibility style property
- display style property
Information from Freedom Scientific regarding CSS property changes seen by JAWS.
CSS Tech Support Notice