Frames
Frames are practical and useful. They are used to split the browser's window into two or more parts, most commonly to offer a fixed navigation on the left side of the browser window and the main content in the frame on the right. This can make navigation easier and can give a better overview of the site.
Despite their advantages you will be unlikely to find them on sites that have been built with accessibility in mind. Frames often confuse the user, especially users of assistive technology, and they can cause a number of mainly technical problems, which can have an effect on accessibility:
- some browsers don't support frames;
- pages cannot be bookmarked easily;
- sometimes the Back button is disabled;
- external links often open in the main frame, obscuring the fact that this page no longer belongs to the original site;
- and most importantly, screen readers might not be able to handle frames or might have difficulties identifying the relationship between frames.
Assistive software has improved over the years and the latest screen readers can interpret frames correctly, but only if a few guidelines are followed:
- provide titles for frames and frameset.
- describe frame relationships.
- provide an alternative for browsers that do not support frames.
Example:
<frameset cols="25%, 75%" title="">
<frame src="navigation.html" name="navigation" title="Navigation links frame" />
<frame src="main.html" name="main" title="Main content frame" />
<noframes>
<a href="noframes.html">No frames version</a>
</noframes>
</frameset>
For browsers that don't support frames include the NOFRAMES tag with links that point to the content.
The LONGDESC attribute, already mentioned in the chapter about graphics, can be used to point to a document that describes the purpose or content of frames in more detail:
<frame src="main.html" longdesc="description.html" title="Main content frame" />
More details can be found in the W3C Accessibility Guidelines.
However, in general it is better to avoid frames. The W3C offers this CSS alternative to frames.