<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marco's accessibility blog &#187; Uncategorized</title>
	<atom:link href="http://www.marcozehe.de/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcozehe.de</link>
	<description>Musings, tips and tricks about the accessible software world</description>
	<lastBuildDate>Tue, 07 Feb 2012 09:14:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Recent happenings in accessibility-related projects financially supported by Mozilla</title>
		<link>http://www.marcozehe.de/2009/09/25/recent-happenings-in-accessibility-related-projects-financially-supported-by-mozilla/</link>
		<comments>http://www.marcozehe.de/2009/09/25/recent-happenings-in-accessibility-related-projects-financially-supported-by-mozilla/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 08:48:00 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcozehe.de/?p=180</guid>
		<description><![CDATA[For several years now, Mozilla has funded varying projects in the field of accessibility development. Projects like Orca&#8217;s support for WAI-ARIA live regions, GNOME Accerciser, NVDA, or more recently, audio and video accessibility work and Firebug accessibility, are, in whole &#8230; <a href="http://www.marcozehe.de/2009/09/25/recent-happenings-in-accessibility-related-projects-financially-supported-by-mozilla/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For several years now, Mozilla has funded varying projects in the field of accessibility development. Projects like Orca&#8217;s support for WAI-ARIA live regions, GNOME Accerciser, NVDA, or more recently, audio and video accessibility work and Firebug accessibility, are, in whole or in part, being funded by the Mozilla Foundation and other Mozilla resources to help fulfill the <a href="http://www.mozilla.org/about/manifesto">Mozilla manifesto</a> and the <a href="https://wiki.mozilla.org/Accessibility/Strategy">Mozilla Accessibility Strategy</a>.</p>
<p>Here&#8217;s a summary of what&#8217;s <a href="http://blog.hecker.org/2009/06/30/new-mozilla-accessibility-projects/">currently happening</a> in Mozilla-funded accessibility-related projects. Most of these surfaced over the past quarter, or last half a year.</p>
<h3>NVDA</h3>
<p>In early August, it was announced that the Mozilla Foundation would renew its funding for the NVDA project. <a href="http://www.nvda-project.org/blog/NewMozillaGrantFurthersNVDA">Mick posted a summary of the goals</a> to the NVDA blog.</p>
<p>The project is well underway, en route to their 2009.1 release with improved support for WAI-ARIA landmarks, a totally revamped list of elements, support for 64 bit operating systems and much more!</p>
<p>Spearheaded by the Mozilla Foundation, who were the first to fund NVDA starting in 2007, <a href="http://www.nvda-project.org/blog/MicrosoftGrant2008-2009Announcement">Microsoft</a>, <a href="http://www.nvda-project.org/blog/YahooSupportsNVDA">Yahoo!</a> and <a href="http://www.nvda-project.org/blog/AdobeProvidesGrantForPDFAndFlash">Adobe</a> have since joined in supporting this open-source screen reader for Windows, offering a compelling alternative to commercially available assistive technologies on this platform.</p>
<p>For more news such as winning the Vision Australia Making A Difference award, check out their <a href="http://www.nvda-project.org/blog/">blog</a>.</p>
<h3>Audio and Video accessibility</h3>
<p>Frank already detailled much of this in his blog post above, and Silvia Pfeiffer just recently published a <a href="https://wiki.mozilla.org/Accessibility/Video_a11y_Aug09">progress report on the grant</a>.</p>
<p>Silvia also gave me some <a href="http://www.annodex.net/~silvia/itext/">demos to test</a>, and if you use JAWS or NVDA or Orca, I suggest you try them out yourself to see how cool they are!</p>
<p>This work has the potential to involve a lot of volunteers in helping make more movies, songs, and other material accessible to a large number of people with varying disabilities. Talk about crowd-sourcing!</p>
<h3>Firebug UI accessibility and the Firebug accessibility testing extension</h3>
<p>There are currently two grants happening in regards to <a href="http://www.getfirebug.com/">Firebug</a>, the web development tool of choice for many thousand web workers.</p>
<p>One is the work the Paciello Group is doing to make the UI accessible. I <a href="http://www.marcozehe.de/2009/07/16/blind-web-devs-jump-on-the-firebug-train/">posted</a> about the Firebug 1.4 release already, but the work doesn&#8217;t stop there. The next alpha release of Firebug 1.5, 1.5xa25, will include accessibility of the net panel, a component that was still missing in 1.4. The documentation has already been <a href="http://clients.paciellogroup.com/firebug/firebug.html#Net_Panel">updated</a> with information on how this will work. I gave this a whirl this week using a custom build I received from Hans (the developer in charge), and it works as advertised! So keep your eyes on the Firebug release cycle to not miss this cool update!</p>
<p>The other portion is work the University of Illinois UIUC is doing to develop an extension that will allow web developers to test whether they&#8217;re using correct accessibility-compliant markup. The extension will honor the WCAG 2.0 guidelines and WAI-ARIA specifications. Development has started recently, and I will be testing an early version soon to see how it fares! Keep your eyes on this blog for more info as it becomes available!</p>
<p>Once this work is completed, Firebug will be a solution for web developers to do testing of accessible web pages with an accessible UI. It means that Mozilla will be able to offer, directly or indirectly, a full range of testing and usage tools starting from the browser itself, the screen reader, and the testing and development side, all in an open-source fashion, driving the accessible web standards effort forward in thus far uncharted territory.</p>
<p>So, let&#8217;s boldly go! <img src='http://www.marcozehe.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcozehe.de/2009/09/25/recent-happenings-in-accessibility-related-projects-financially-supported-by-mozilla/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mac OS X accessibility: A success story</title>
		<link>http://www.marcozehe.de/2008/11/19/mac-os-x-accessibility-a-success-story/</link>
		<comments>http://www.marcozehe.de/2008/11/19/mac-os-x-accessibility-a-success-story/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 11:41:16 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcozehe.de/?p=86</guid>
		<description><![CDATA[Over the past couple of years, accessibility options have become more widely available than just on the Windows platform. Since GNOME 2.18, Orca has become part of the desktop package, offering a way for some distributions to be installed with &#8230; <a href="http://www.marcozehe.de/2008/11/19/mac-os-x-accessibility-a-success-story/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the past couple of years, accessibility options have become more widely available than just on the Windows platform. Since GNOME 2.18, Orca has become part of the desktop package, offering a way for some distributions to be installed with some speech guidance.</p>
<p>Also, Apple entered the same field during the Mac OS 10.4 Tiger timeframe and offered the <a href="http://www.apple.com/accessibility/voiceover/">VoiceOver</a> screen reader as part of the operating system. This is not new, since Mac OS X has since moved on to Leopard 10.5. But I recently had the first chance to play with it, and I must say I am deeply impressed! Once you turn on a Mac that you just bought, it prompts you that if you can&#8217;t see the screen, you can press <kbd>Cmd+F5</kbd> to turn on VoiceOver. From that point on, it talks you through the Setup Assistant using a clear, very intelligible voice named Alex. This speech engine is built with a &#8220;breathing&#8221; algorithm making it sound even more natural than other current TTS engines. Once I had mine set up, I was wirelessly connected and ready to go.</p>
<p>For the fun of it, I also booted from the DVD. This boots a copy of the operating system and automatically launches the installer. However, even here you can press <kbd>Cmd+F5</kbd> to get instant VoiceOver speech and full access to the installer and other utilities such as the Disk Utility that Apple offers for maintenance.</p>
<p>By comparison, on Windows, only part of the installer is accessible, and then only on English language versions of the operating system. And, it uses a voice called Microsoft Sam on Windows XP, and an only slightly better sounding female voice whose name escapes me right now for Vista. The part of the installer that, even under Vista, still runs in text mode, is not accessible at all. So disk partitioning, formatting etc., are all without speech support. The alternative way many of us use is an answer file that sucks in all the information and then lets the installer run automatically.</p>
<p>On Linux, the story can be slightly better depending on the distribution and the version of that distribution you&#8217;re using. Ubuntu 8.04 Hardy Heron was pretty good in that you only had to press a rather straight-forward series of keystrokes, but in right order, to get a talking installer. Ubuntu 8.10 made a huge lapse backwards unfortunately, again requiring the use of the command line, sudo, Ubiquity and the hope that you typed it all right while you had to quit Orca to get it running with administrative privileges.</p>
<p>I haven&#8217;t looked at the new Open Solaris, which is supposed to also have an accessible installer, so cannot comment on its story. Other distributions require other forms of blind-flying to get to a talking or brailling installer, which is nothing for the faint of heart.</p>
<p>Both Windows and Linux also suffer from the additional risk that the hardware in the computer you&#8217;re trying to install them on is not recognized. In worst case, the sound card won&#8217;t be recognized, leaving you completely in the dark. There, binding the operating system to specific hardware, like Apple does, has a clear advantage: They know what&#8217;s in their boxes and can make sure it always runs.</p>
<p>And again, nothing is as easy as pressing a single keystroke to get speech.</p>
<p>And the wwealth of applications that is already accessible on Mac OS X is breathtaking as well. Not only programs that come with the operating system or the additional applications package such as TextEdit, Mail, Safari, QuickTime and iTunes, but also third-party applications often used, or needed, by blind users are accessible. One is Skype, which is the preferred Voice-Over-IP application used by the blind community. Another is OpenOffice, which, starting at version 3.0, is a Cocoa application and has full VoiceOver support.</p>
<p>On Linux, Skype, for example, isn&#8217;t accessible yet. This is one of the most frequently asked-for applications, so it is hoped that with the migration from Corba to D-Bus for the accessibility infrastructure, this will become easier to do, but for now, the GNOME desktop accessibility story definitely misses out on this important application.</p>
<p>On Windows, Narrator is not even enough to get you to a point where you can download NVDA. So if you have to reinstall, make sure you put a portable version onto a USB pen drive before so you have good access to your system once it&#8217;s up and running.</p>
<p>In comparing these three platforms, it can be said that Apple took their time to come to the accessibility party, but what they came up with simply works great out of the box. In my opinion, this is a real alternative to Windows. So if you think about buying a new notebook or desktop computer in the near future, why not walk up to a Mac shop and take a look at the models there?</p>
<p>For the Mozilla story, this underlines that we better continue our effort soon to get Firefox accessible on the Mac so people can take advantage of things like WebVisum there, too.</p>
<p>If you&#8217;d like to listen to some demos of VoiceOver support on the Mac, there is a great three-part podcast series on <a href="http://www.blindcooltech.com/">Blind Cool Tech</a> made by Mike Arrigo that is definitely worth the time listening to!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcozehe.de/2008/11/19/mac-os-x-accessibility-a-success-story/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Some random thoughts</title>
		<link>http://www.marcozehe.de/2008/07/31/some-random-thoughts/</link>
		<comments>http://www.marcozehe.de/2008/07/31/some-random-thoughts/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 23:50:23 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcozehe.de/?p=51</guid>
		<description><![CDATA[I&#8217;m currently attending the Mozilla 2008 summit in Whistler, British Columbia, Canada. Among all the good sessions we&#8217;re having, there are a couple that I definitely want to blog more about over the course of the next few days, but &#8230; <a href="http://www.marcozehe.de/2008/07/31/some-random-thoughts/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently attending the <a href="http://wiki.mozilla.org/Summit2008">Mozilla 2008 summit</a> in Whistler, British Columbia, Canada. Among all the good sessions we&#8217;re having, there are a couple that I definitely want to blog more about over the course of the next few days, but wanted to share a few thoughts right now so we all kind of know what to expect:</p>
<ul>
<li>One of the big themes here at the summit is the effort at Mozilla to bring the Gecko platform to mobile devices. There are many ideas floating around, and it&#8217;s certainly going to also be an accessibility field. I have some ideas that I need to get formulated properly which I&#8217;d like to bounce off the community to get some feedback.</li>
<li>The Thunderbird and Calendar teams have done some great progress in their respective fields, and now that Thunderbird has moved to Gecko 1.9.1, and Calendar will follow after its 0.9 release, and then get integrated with Thunderbird 3, we&#8217;ll have some interesting times ahead getting the calendar controls accessible. ARIA is going to help a lot with that, and I&#8217;m looking forward to help formulate proper exposure of information to ATs for these.</li>
<li>Aaron&#8217;s and my talk about accessibility API and standards support in Firefox 3 stirred quite some interest, and I believe it helped quite a few people understand better how the different pieces connect to one another.</li>
<li>Speaking of ARIA, there have been a few people even asking outside sessions about it, and I&#8217;m hoping to be able to connect with Ray and John tonight at the bbq so we can finally talk a bit about jQuery and Amo and all the cool stuff surrounding it. So Ray, come and find me! <img src='http://www.marcozehe.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </li>
</ul>
<p>On a more organizational side, rumour has it that the rock slide that blocks the main highway from Whistler to Vancouver should either be cleared, or a good alternative route be found until we depart on Friday, so no change in travel plans is necessary. Let&#8217;s keep our fingers crossed for that! And let&#8217;s also hope that nobody got hurt in that rock slide.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcozehe.de/2008/07/31/some-random-thoughts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easy ARIA tip #3: aria-invalid and role &#8220;alert&#8221;</title>
		<link>http://www.marcozehe.de/2008/07/16/easy-aria-tip-3-aria-invalid-and-role-alert/</link>
		<comments>http://www.marcozehe.de/2008/07/16/easy-aria-tip-3-aria-invalid-and-role-alert/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 12:42:11 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[ARIA]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.marcozehe.de/?p=42</guid>
		<description><![CDATA[I know, I know, it&#8217;s been a while since I posted my last Easy ARIA tip. But I&#8217;m hoping that this one will find you all excited and willing to play with it some more! The problem: You have a &#8230; <a href="http://www.marcozehe.de/2008/07/16/easy-aria-tip-3-aria-invalid-and-role-alert/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I know, I know, it&#8217;s been a while since I posted my last Easy ARIA tip. But I&#8217;m hoping that this one will find you all excited and willing to play with it some more!</p>
<p>The problem: You have a form, a contact form, for example, that you want to put some accessible error checking into. Common problems are e-mail addresses that are not valid, or a name that does not contain at least a first and a surname.</p>
<h3>The form</h3>
<p>Let&#8217;s start out with a simple form.</p>
<pre>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Contact form&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form method="post" action="post.php"&gt;
&lt;fieldset&gt;&lt;legend&gt;Please enter your contact details&lt;/legend&gt;
&lt;label for="name"&gt;Your name (required):&lt;/label&gt;
&lt;input name="name" id="name" aria-required="true"/&gt;&lt;br /&gt;
&lt;label for="email"&gt;E-Mail address (required):&lt;/label&gt;
&lt;input name="email" id="email" aria-required="true"/&gt;&lt;br /&gt;
&lt;label for="website"&gt;Website (optional):&lt;/label&gt;
&lt;input name="website" id="website"/&gt;
&lt;/fieldset&gt;
&lt;label for="message"&gt;Please enter your message (required):&lt;/label&gt;&lt;br /&gt;
&lt;textarea name="message" id="message" rows="5" cols="80" aria-required="true"&gt;&lt;/textarea&gt;&lt;br /&gt;
&lt;input type="submit" name="submit" value="Send message"/&gt;
&lt;input type="reset" name="reset" value="Reset form"/&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Straight and simple, but we&#8217;re not here to win beauty prices anyway. <img src='http://www.marcozehe.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Checking for validity and notifying the user</h3>
<p>Checking the validity and notifying the user consists of several steps:</p>
<ol>
<li>Checking if the e-mail address or entered name are valid. To keep it simple, we&#8217;ll check whether the e-mail address contains the &#8220;@&#8221; symbol, and if the name entry contains at least 1 space characters &#8221; &#8220;.</li>
<li>Setting the field&#8217;s <em>aria-invalid</em> attribute and giving it a value of &#8220;true&#8221;.</li>
<li>Notifying the user via an alert that the value entered was incorrect. Instead of using an intrusive dialog box created by the JavaScript &#8216;alert&#8217; function, we&#8217;ll use a simple WAI-ARIA widget to do it. This notifies the user, but lets them continue interacting with the form without any interruptions.</li>
</ol>
<p>All of this happens when the input loses focus, meaning in the &#8220;onblur&#8221; handler.</p>
<p>The JavaScript code I wrote looks like this, inserted above the closing &#8220;head&#8221; tag:</p>
<pre>
&lt;script type="application/javascript"&gt;
<code>
  function removeOldAlert()
  {
    var oldAlert = document.getElementById("alert");
    if (oldAlert)
      document.body.removeChild(oldAlert);
  }

  function addAlert(aMsg)
  {
    removeOldAlert();
    var newAlert = document.createElement("div");
    newAlert.setAttribute("role", "alert");
    newAlert.setAttribute("id", "alert");
    var msg = document.createTextNode(aMsg);
    newAlert.appendChild(msg);
    document.body.appendChild(newAlert);
  }

  function checkValidity(aID, aSearchTerm, aMsg)
  {
    var elem = document.getElementById(aID);
    var invalid = (elem.value.indexOf(aSearchTerm) < 0);
    if (invalid) {
      elem.setAttribute("aria-invalid", "true");
      addAlert(aMsg);
    } else {
      elem.setAttribute("aria-invalid", "false");
      removeOldAlert();
    }
  }
</code>
&lt;/script&gt;
</pre>
<h4>The checkValidity function</h4>
<p>The core is the checkValidity function. It takes three parameters: The ID of the input that is to be validated, the term to search for to ensure validity, and the error message to be inserted into the alert.</p>
<p>To see if it is valid, the function checks whether the indexOf the input's value is anything greater than -1. A value of -1 or less is returned if the index of the search term could not be found within the value.</p>
<p>If invalid, the function does two things:</p>
<ol>
<li>It sets the element's <em>aria-invalid</em> attribute to "true", which will indicate to screen readers that there is invalid content in here.</li>
<li>It will call the addAlert function to add the alert with the provided error message.</li>
</ol>
<p>If the search term is found, the <em>aria-invalid</em> attribute is reset to "true". In addition, any alert that still might be around is removed.</p>
<h4>The addAlert function</h4>
<p>This function first removes any old alerts. The function is simple: It looks for an element with id "alert", and if found, removes that from the document object model.</p>
<p>Next, the function creates a div element to hold the alert text. It gets an ID of "alert". And it gets a role set of "alert". This is actually ARIA-inspired, even though it doesn't say "aria" in the attribute name. The reason is that <em>role</em> is based on the XHTML role attribute module that was simply ported to HTML for simplicity.</p>
<p>The text is added to the div element, and the div element is added to the document.</p>
<p>The moment this happens, Firefox will fire an "alert" event to assistive technologies when this div appears. Most screen readers will pick this one up automatically and speak it. This is similar to the Notification Bar in Firefox that prompts you whether you want to save a password. Our one does not have any buttons to press, it just tells us what's wrong.</p>
<h3>Adding the magic to the "onblur" event</h3>
<p>All that's left now is add the event handler. We need to change the two inputs for e-mail and name for this:</p>
<pre>
&lt;input name="name" id="name" aria-required="true" onblur="checkValidity('name', ' ', 'Invalid name entered!');"/&gt;&lt;br /&gt;
&lt;input name="email" id="email" aria-required="true" onblur="checkValidity('email', '@', 'Invalid e-mail address');"/&gt;&lt;br /&gt;
</pre>
<h3>Testing the example</h3>
<p>I've put up the above as an <a href="http://www.marco-zehe.de/examples/Tutorial_aria-invalid_and_role_alert.html">static example page</a> for you to try it out. If you use Firefox 3 and a current supported screen reader, try the following:</p>
<ol>
<li>Enter only your first name as the name. When tabbing, you'll hear an alert that tells you you've entered an invalid name. You can then shift-tab back and correct the error.</li>
<li>Enter an e-mail address that has no "@" symbol. When tabbing out of this field, you should hear a warning that says you didn't enter a valid e-mail address.</li>
</ol>
<p>In both cases, when returning focus to the field in question, your screen reader should tell you that this field is invalid. JAWS 9 supports this, but JAWS 8 does not, so this may not work in all versions of the screen readers supported.</p>
<h3>A few questions that you might have</h3>
<dl>
<dt>Why did you put both "(required)" in the label text and the <em>aria-required</em> attribute on some of the inputs?</dt>
<dd>Because if this were a real live form, and the site was being visited by a browser that does not yet support ARIA, we'd still want to give an indication that this is a required field.</dd>
<dt>Why don't you set focus back to the invalid field automatically?</dt>
<dd>Because this is not allowed by at least the Windows API specs and possibly others. Also, letting the focus jump around without real user interaction too often is not a nice thing to do in general.</dd>
</dl>
<h3>In conclusion</h3>
<p>Personally, it is my hope that websites would include such techniques more often in the future when filling out forms. There's nothing more frustrating than filling out a form with 20 or so fields, submitting it, only to find that field 3 was invalid, and having to go through all fields again to make sure the values were retained, or supplying some information redundantly.</p>
<p>This is one of those examples where, in my opinion, more direct accessibility and user-friendliness can be achieved by explicitly using some JavaScript in combination with ARIA.</p>
<p>I hope you found this little tutorial of some use! I'd welcome your feedback as always!</p>
<p>And of course, you're welcome to enhance this little example as a "homework" to also check whether something valid was entered for the "message" textarea.</p>
<h5>Previous Easy ARIA tips</h5>
<ol>
<li><a href="http://www.marcozehe.de/2008/02/29/easy-aria-tip-1-using-aria-required/">aria-required</a></li>
<li><a href="http://www.marcozehe.de/2008/03/23/easy-aria-tip-2-aria-labelledby-and-aria-describedby/">aria-labelledby and aria-describedby</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.marcozehe.de/2008/07/16/easy-aria-tip-3-aria-invalid-and-role-alert/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Extension developers: 5 things to make your extension more accessible</title>
		<link>http://www.marcozehe.de/2008/07/01/extension-developers-10-things-to-make-your-extension-more-accessible/</link>
		<comments>http://www.marcozehe.de/2008/07/01/extension-developers-10-things-to-make-your-extension-more-accessible/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 12:38:05 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[SeaMonkey]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[XUL]]></category>

		<guid isPermaLink="false">http://www.marcozehe.de/2008/07/01/extension-developers-10-things-to-make-your-extension-more-accessible/</guid>
		<description><![CDATA[After my first reach out to extension developers, Aaron and I have brainstormed and come up with the 5 most common things you as an extension developer should consider to make your extension more accessible. Here&#8217;s what we came up &#8230; <a href="http://www.marcozehe.de/2008/07/01/extension-developers-10-things-to-make-your-extension-more-accessible/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After my <a href="http://www.marcozehe.de/2008/05/18/extension-developers-give-your-extension-an-accessibility-checkup-for-firefox-3/">first reach out</a> to extension developers, Aaron and I have brainstormed and come up with the 5 most common things you as an extension developer should consider to make your extension more accessible. Here&#8217;s what we came up with:</p>
<ol>
<li>Make sure your extension is easily discoverable using the keyboard. A common pattern is to use an icon in the status bar or on a toolbar to launch an extension, but this is not possible to do when using only a keyboard, not a mouse. The easiest and most discoverable way is to add a menu item to the <em>Tools</em> menu to make sure keyboard users can launch it.</li>
<li>Labels that are not associated with the control they&#8217;re labelling. As a result, screen reader do not know what a particular textbox, menulist, radiogroup etc. is for. Associate your controls with their labels by using the xul:label&#8217;s <em>control</em> attribute pointing to the id of the actual control. Works with xul:textbox, xul:menulist, xul:radiogroup and others and is an absolute accessibility must.</li>
<li>Xul:page elements that are missing a <em>title</em> attribute. If you use xul:page elements in your chrome, make sure to give them a <em>title</em> attribute that is meaningful. That makes sure screen readers for the blind can properly pick them up and not read the chrome URL instead.</li>
<li>Make sure any place holders are in the tab order by using
<pre>&lt;a href="#"&gt;</pre>
<p>or</p>
<pre>&lt;div tabindex="0" role="button" onkeypress="if (event.keyCode == event.DOM_VK_ENTER) { ... }"/&gt;</pre>
<p>Any items that are put into a web page to enhance the user experience, and which allow interaction, must be keyboard accessible. A good example is what Adblock plus does with the ability to block certain elements like Flash animations.</li>
<li>Make sure all event handlers react to both a mouse and keyboard interaction schema. In fact, you should always completely test your extension without touching the mouse. Some common problems are:
<ul>
<li>For opening context menus, use the <em>oncontextmenu</em> event handler or the <em>context</em> attribute. Do not code context menus to open specifically on the click of the right mouse button, since this will exclude the use of the keyboard. Both <em>oncontextmenu</em> and <em>context</em> will react to the operating system specific context menu triggers.</li>
<li>Provide keyboard equivalents for mouse-dependent functionality such as <em>mouseover</em>, <em>mousemove</em>, or <em>ondoubleclick</em>. For example in a listbox where one can double-click a list item to perform a certain action with it, also allow the <kbd>Enter</kbd> key or an equivalent keystroke to perform the same action. For Drag And Drop actions, provide context menu alternatives, Copy And Paste, etc.</li>
</ul>
</ol>
<p>I hope these are helpful hints for you to make your extension, XULRunner application or the like more accessible to everyone!</p>
<p>For more information, see the <a href="http://developer.mozilla.org/en/docs/Accessible_XUL_Authoring_Guidelines">XUL Accessibility guidelines</a> on MDC.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcozehe.de/2008/07/01/extension-developers-10-things-to-make-your-extension-more-accessible/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

