{"id":31,"date":"2007-03-12T12:38:59","date_gmt":"2007-03-12T18:38:59","guid":{"rendered":"http:\/\/techory.com\/sxsw\/?p=31"},"modified":"2014-02-27T14:13:06","modified_gmt":"2014-02-27T20:13:06","slug":"ajax-kung-fu-meets-accessibility-feng-sui","status":"publish","type":"post","link":"http:\/\/techory.com\/sxsw\/?p=31","title":{"rendered":"AJAX Kung Fu Meets Accessibility Feng Sui"},"content":{"rendered":"<p><em>Monday, March 12th @ 10:00 am<\/em><\/p>\n<p>Jeremy Keith\u00a0\u00a0 Web Developer,\u00a0\u00a0 Clearleft Ltd<br \/>\nDerek Featherstone<\/p>\n<p><strong>Accessibility in AJAX<\/strong><br \/>\n2 Kinds<br \/>\nDirected at custom people or technologies<br \/>\nGeneral universal accessibility (best)<br \/>\n-a site that can adapt to anyone and any device using that site<\/p>\n<p><strong>Progressive Enhancement <\/strong>(order to do things)<br \/>\n1. Content<br \/>\n2. Structure it &#8211; what does this mean? &#8211; NOT how does this look?<br \/>\n3. Presentation &#8211; how does this look<br \/>\n4. Behavior &#8211; how does this work?<\/p>\n<p>You should be able to strip away any of these w\/out any problems<br \/>\nWhat you can use for these:<br \/>\n2. HTML (content)<br \/>\n3. CSS (structure)<br \/>\n4. AJAX (behavior)<\/p>\n<p>Many times the AJAX comes first &#8211; this is bad.<\/p>\n<p><strong>What is AJAX?<\/strong><br \/>\nAsynchronism is cool &#8211; don&#8217;t need to refresh page to get info from the server &#8211; not just pretty expand out boxes<\/p>\n<p>Web = Thin Client<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Browser<\/span><\/strong><br \/>\nDisplay<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Server<\/span><\/strong><br \/>\nstore<br \/>\nprocess<\/p>\n<p>Web = Rich Client<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Browser<\/span><\/strong><br \/>\ndisplay<\/p>\n<p>**AJAX** use ajax to process &#8211; bad because AJAX is required<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Server<\/span><\/strong><br \/>\nstore<\/p>\n<p><strong>HIJAX<\/strong><br \/>\nprogressive enhancement<br \/>\ncontent<br \/>\nstructure<br \/>\nbehavior<\/p>\n<p>Browser (links\/forms) -&gt; Server (returns\/serves whole page back no mater what the link\/form)<\/p>\n<p>Browser (links\/forms) -&gt; AJAX -&gt; Server (just sends back via AJAX what is needed) -&gt; Browser just shows the changed elements<\/p>\n<p>Deceptively rich content &#8211; AJAX is just the dumb waiter. It just delivers the stuff between the browser and the server. If the AJAX layer is stripped out it is OK because you&#8217;re going back to the old way of the server delivering an entire page.<\/p>\n<p>Paradox<br \/>\nplan for AJAX from the start but implement AJAX at the end<\/p>\n<p>Watch for: &lt;a href=&#8221;javascript:&#8230;&#8221;&gt; or &lt;a href=&#8221;#&#8221; onclick =&#8230;&gt;<\/p>\n<p><strong>Patterns good for AJAX<\/strong><br \/>\nrating things<br \/>\nregister (user name is taken)<br \/>\ncomments (more blogs should use this)<br \/>\nshopping carts<\/p>\n<p><strong>Feng Shui<\/strong><br \/>\nFind a way where things can peacefully coexist.<\/p>\n<p>Feng Shui means Wind &amp; Water &#8211; Wind and water can be peaceful or very destructive<\/p>\n<p>Accessible Scripting:<br \/>\n&#8217;99 &#8211; site works w\/ or w\/out javascript<br \/>\n&#8217;04-&#8217;05 &#8211; accessibility scripting something different<br \/>\n&#8217;06 &#8211; HIJAX <a title=\"Breaking the Mold With Meaningful Design\" href=\"http:\/\/chapters.ca\">(http:\/\/chapters.ca)<\/a><br \/>\nis AJAX pop-up worse than a real browser window pop up &#8211; a screen reader doesn&#8217;t see the AJAX pop up. Maybe better to keep on page w\/anchor hidden w\/css at bottom<\/p>\n<p>Create a linear pathway through pages if one exists.<\/p>\n<p><strong>Examples<\/strong><br \/>\nForm advisories<br \/>\ntables prevent screen readers to get them &#8211; not part of form<br \/>\njust style &lt;em&gt; to pus it to the side as part of form<br \/>\nif there is an error style a &lt;strong&gt; to indicate<br \/>\nScreen readers will see this as part of &lt;label&gt;<\/p>\n<p>A &lt;label&gt; can also be added to submit bottom saying there is a problem<\/p>\n<p><strong>Where Next?<\/strong><br \/>\nhref=&#8221;#nextstop&#8221;<br \/>\nTabIndex = &#8220;-1&#8221;<\/p>\n<p>Always an option not to use AJAX &#8211; consider alternatives or possibly make a &#8220;no ajax&#8221; preference<\/p>\n<p>&#8220;Accessibility is just as seXy!&#8221;<\/p>\n<p><strong>Questions<\/strong><br \/>\nHow do you deal with this when using a CMS or server language that doesn&#8217;t handle this?<br \/>\nMaybe find something that does or build your own if accessibility is important to you<\/p>\n<p>Where are screen readers headed and why are they so slow to keep up?<br \/>\nThey are getting better, but they are slow, they have to stay backwards compatible. Standards bodies are helping in this. Just a wait and see thing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Monday, March 12th @ 10:00 am Jeremy Keith\u00a0\u00a0 Web Developer,\u00a0\u00a0 Clearleft Ltd Derek Featherstone Accessibility in AJAX 2 Kinds Directed at custom people or technologies General universal accessibility (best) -a site that can adapt to anyone and any device using that site Progressive Enhancement (order to do things) 1. Content 2. Structure it &#8211; what [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/posts\/31"}],"collection":[{"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=31"}],"version-history":[{"count":1,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":695,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=\/wp\/v2\/posts\/31\/revisions\/695"}],"wp:attachment":[{"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/techory.com\/sxsw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}