Expert Handlers and the Flow of Control
author: Neil Soiffer (chair, Expert Handlers SIG
The goal of the Expert Handlers working group is to define a standard so that AT software can call on expert software to interpret specialized markup. One issue that needs to be addressed is how and where (in the flow of control of reading a page) should the expert handler get invoked. Here are some possibilities:
The expert handler registers itself with the rendering application (e.g., the web browser, PDF viewer, etc.). When the page is loaded, the handler is invoked by the renderer to convert the DOM or somehow proxy for the DOM node to make it appear to have non-expert content. E.g., it might convert the specialized markup to text or some generalized markup that AT can typically handle
The AT traverses the DOM and when it gets to some node it doesn't understand, it consults some resource that associates a particular handler with the node name. It gets the node's content (which might include other nodes) from the DOM and passes that content to the expert handler. It then issues requests to the handler (e.g., “give me text to speak for the content”).
The AT traverses the DOM and when it gets to some node it doesn't understand, it consults some resource that associates a particular handler with the node name. It then points the expert handler to that node and issues requests to the handler. In this case, the handler is directly interacting with the DOM.
Although similar, the later two cases probably have implications on the difficulty of implementation and the capabilities of the interface. Some of these are:
If the expert handler directly reads the DOM, then the expert handler must understand MSAA, IA2
, or whatever is appropriate for the level of functionality it needs. This also implies that the rendering application must support those standards. If not, the expert handler would need to know how to access application specific DOMs.
If the expert handler is given a copy of what resides in the DOM, then interacting with the content (e.g., filling in a text field) would complicate any standard that is developed because support for passing info about input would need to be part of the standard.