<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML lang="en">
<HEAD>
<META http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META http-equiv="Content-Style-Type" content="text/css">
<meta name="copyright" content="Copyright (c) Ministry of Internal Affairs and Communications, IBM Corporation and others 2007, 2011. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
<TITLE>Checking the accessibility and usability of a document in the blind tab</TITLE>
<LINK href="miChecker.css" rel="stylesheet" type="text/css" class="head">
</HEAD>
<BODY>
<H1>Checking the accessibility and usability of a document in the blind tab</H1>
<P>
An HTML document can be opened with miChecker to determine how accessible and usable the page is to readers who rely on voice browsers to read webpages.
</P>
<P>
To check the accessibility and usability of a document for people who are blind:
</P>
<OL>
<LI>Open the document in one of the following ways:
  <UL>
  <LI>Click <B>File</B> &gt; <B>Open</B>, and then navigate to URL or the local file to be checked.
  <LI>Type the URL in the address line, and then click <B>GO</B>.<br> The document opens in the Browser View pane. 
  </UL>
<LI>Click <B>Blind</B> above the top right pane to select the blind mode.
<LI>Open the <A href="parametersBlind.html">Blind Usability Visualization preference page</A> in one of the following ways:
  <UL>
  <LI>Click <B>Settings</B>.
  <LI>Click <B>Window</B> &gt; <B>Preferences</B> &gt; <B>ACTF</B> &gt; <b>Blind Usability Visualization</b>.
Set the visualization mode that miChecker should use, and click either <B>Apply</B> or <B>OK</B>.
  </UL>
<LI>Visualize the blind usability and detect the accessibility and usability problems in one of the following ways:
  <UL>
  <LI>Click the <B>Visualize</B> button.
  <LI>Click the <B>Visualization</B> menu &gt; <B>Visualize (blind)</B> or use the shortcut key (Ctrl+Shift+B).
  </UL>
<LI>Click <A href="elementCss.html"><B>ID/CSS</B></A> to see the relevant information in the tabs.
<LI>(Optional) Click <B>Save</B> to save the report file as an HTML document.<BR>
Note: The report file is an HTML document consisting of three
parts: a diagram showing the overall rating, a usability visualization
view, and a problem list. When you click a line in the problem list,
its corresponding element in the visualization view is highlighted,
and the page automatically scrolls if necessary to show the element.
<LI>Address each entry in the problem list. See <A href="lineViewBlind.html">Line View pane (blind usability)</A> for details. As each problem is successfully resolved, the rating in the Overall Rating pane improves.
</OL>

<H1 class="related">Related topics</H1>
<UL class="related">
<LI><A href="workspace.html">Exploring the HTML Accessibility mode</A>
<LI><A href="problemsBlind.html">Accessibility and usability problems for blind users</A>
<LI><A href="checkLv.html">Checking the accessibility and usability of a document in the low vision tab</A>
</UL>

<P>
<A href="index.html">Go to Index</A>
<hr>
<DIV class="logo"><IMG src="images/logo.gif" alt=""></DIV>
</P>

</BODY>
</HTML>
