SlideShare ist ein Scribd-Unternehmen logo
1 von 123
Merging Ajax and
Accessibility
Mark Meeker

The Rich Web Experience
Vienna,VA
September 4-6, 2008
“ The power of the Web is in its
universality. Access by everyone
regardless of disability is an
essential aspect.”
                 - Tim Berners-Lee
What Changed?
Interaction Patterns
•   Filters            •   Rating Widgets
•   Transitions        •   Sliders
•   Auto-complete      •   Micro-content
•   Calendar Pickers   •   Auto-fill
•   Collapse           •   Expand / Collapse
•   Drag and Drop      •   Inline Validation
•   Lightboxes         •   Zoom
•   Yellow Fade        •   Navigation
•   Auto Update        •   Auto Refresh
•   Hover              •   Carrousel
•   Tabs               •   Inline edit
Ajax is Everywhere




                     http://blaugh.com/2006/08/21/ajax-makes-everything-better/
Scope
Scope


 • Blind, low vision, color blindness
 • Limited mobility
 • Learning disabilities
 • Deaf, hearing impaired
Scope


   • Screen readers
   • Braille displays
   • Screen magnification
   • Keyboard only navigation
   • Speech recognition
Universality
WCAG 1.0

6.3 Ensure that pages are usable when
scripts, applets, or other programmatic
objects are turned off or not supported. If
this is not possible, provide equivalent
information on an alternative accessible page.
Progressive Enhancement
Progressive Enhancement

• Content is king!
Progressive Enhancement

• Content is king!
• Start with POSH - Plain Old Semantic HTML
Progressive Enhancement

• Content is king!
• Start with POSH - Plain Old Semantic HTML
• Semantic markup to supply meaning to
  content
Progressive Enhancement

• Content is king!
• Start with POSH - Plain Old Semantic HTML
• Semantic markup to supply meaning to
  content
• Serve base content to everyone
Progressive Enhancement

• Content is king!
• Start with POSH - Plain Old Semantic HTML
• Semantic markup to supply meaning to
  content
• Serve base content to everyone
• Add presentation and behavior to enhance
  experience
Progressive Enhancement
Progressive Enhancement


HTML



Content
Progressive Enhancement


HTML         CSS



Content   Presentation
Progressive Enhancement


HTML         CSS           JS



Content   Presentation   Behavior
Progressive Enhancement


 HTML            CSS           JS



Content       Presentation   Behavior



  o Frills”
“N
Progressive Enhancement


 HTML               CSS             JS



 Content         Presentation     Behavior


         ills”           it Up”
  No   Fr           ress
“                “D
Progressive Enhancement


 HTML               CSS               JS



 Content         Presentation       Behavior



       Frills”         s it Up”
                                         it Sing”
“ No             “D res           “M ake
Progressive Enhancement

         1   2    3       4

  HTML                 
  CSS                  
   JS                  
The Long Tail

• Universality
• Multiple Devices
• Graded Browser Support
• Search Engine Friendly
Progressive Enhancement
Progressive Enhancement




                                 1
                          HTML
                                 
                          CSS
                                 
                           JS
                                 
<img src=”/map/image” />

<ul>
  <li><a   href=”/map/move?dir=n”>North</a></li>
  <li><a   href=”/map/move?dir=e”>East</a></li>
  <li><a   href=”/map/move?dir=s”>South</a></li>
  <li><a   href=”/map/move?dir=w”>West</a></li>
  ...
</ul>

<ul>
  <li><a href=”/map/zoom?level=1”>Zoom Level 1</a></li>
  <li><a href=”/map/zoom?level=2”>Zoom Level 2</a></li>
  <li><a href=”/map/zoom?level=3”>Zoom Level 3</a></li>
  ...
</ul>
Progressive Enhancement




                                 2

                          HTML
                                 
                          CSS
                                 
                           JS
                                 
Progressive Enhancement




                                 3

                          HTML
                                 
                          CSS
                                 
                           JS
                                 
Progressive Enhancement




                                 4

                          HTML
                                 
                          CSS
                                 
                           JS
                                 
Select from known list:




Free form input:
2

HTML   
CSS    
 JS    

                4

       HTML     
       CSS      
           JS   
2

HTML   
CSS    
 JS    

                4

       HTML     
       CSS      
           JS   
Interaction Patterns
•   Filters            •   Rating Widgets
•   Transitions        •   Sliders
•   Auto-complete      •   Micro-content
•   Calendar Pickers   •   Auto-fill
•   Collapse           •   Expand / Collapse
•   Drag and Drop      •   Inline Validation
•   Lightboxes         •   Zoom
•   Yellow Fade        •   Navigation
•   Auto Update        •   Auto Refresh
•   Hover              •   Carrousel
•   Tabs               •   Inline edit
Interaction Patterns
•   Filters            •   Rating Widgets
•   Transitions        •   Sliders
•   Auto-complete      •   Micro-content
•   Calendar Pickers   •   Auto-fill
•   Collapse           •   Expand / Collapse
•   Drag and Drop      •   Inline Validation
•   Lightboxes         •   Zoom
•   Yellow Fade        •   Navigation
•   Auto Update        •   Auto Refresh
•   Hover              •   Carrousel
•   Tabs               •   Inline edit
Hijax

• Term coined by Jeremy Keith
• Bulletproof Ajax
  (http://bulletproofajax.com/)
• Pull in portion of page via Ajax when XHR
  is supported
• Re-use same portion when a full page
  refresh is required
Hijax

        Header


          Module 1

 Rail

          Module 2


        Footer
Hijax

        Header


          Module 1

 Rail

          Module 2


        Footer        noscript
                        page
                     transition
Hijax

        Header


          Module 1

 Rail

          Module 2


        Footer        noscript     Login
                        page      Module
                     transition
Hijax

        Header


          Module 1   JS-Enabled
 Rail                   XHR
          Module 2


        Footer        noscript     Login
                        page      Module
                     transition
Hijax

        Header

                                  Login Module
          Module 1   JS-Enabled
 Rail                   XHR
          Module 2


        Footer        noscript         Login
                        page          Module
                     transition
JS-Enabled
     XHR



no-script
   page
transition
Redundant Inputs
Redundant Inputs


  • Offer multiple input options
  • GUI input and keyboard input
  • Enhance visual cues with text-based cues
  • Look to desktop interfaces for patterns
  • Seek out CLI developers for testing
Redundant Inputs




                   http://netflix.com
Redundant Inputs




               http://developer.yahoo.com/yui/examples/
Linearization
Linearization




                http://ebookers.com
Linearization




                http://ebookers.com
Linearization

    State/      Zip/Postal
                                Examples
   Province       Code
      No           Yes       United Kingdom, France, Germany




   Drop Down       Yes        United States, Canada, Australia




     Input         Yes

      No           No                     Ireland
Linearization
Linearization




                http://basecamphq.com
Linearization




                http://basecamphq.com
Focus
Focus


  <input>          <div>

    <a>      vs.   <td>

  <button>         <img>
Real Link?




             http://ebookers.com
Real Checkbox?




                 http://amazon.com
Real Checkbox?


    1     2      3


    4     5      6


    7     8      9


                     http://amazon.com
Real Checkbox?

             1 2 3
             4 5 6
             7 8 9




                     http://amazon.com
Is that a button?




                    http://apple.com
Tab Index
                 Focusable with mouse or
   Tab Index                                       Navigable via tab key
                     element.focus()
                 Follows default behavior of
                                                Follows default behavior of
  Not present   element (only form controls
                                                         element
                 and anchors receive focus)
                                                   Tabindex value directly
     >0                     Yes                 specifies where this element
                                               is positioned in the tab order.
                                                  In tab order relative to
      0                     Yes                    element’s position in
                                                         document

      -1                    Yes                      Not in tab order.



                                                          http://www.dojotoolkit.org/book/export/html/118
Where to Next?




                 http://facebook.com
Updates
Updates




          http://finance.yahoo.com/
Updates




          http://finance.yahoo.com/
Updating the Buffer
function prepareBuffer()
{
    var objNew = document.createElement('p');
    var objHidden = document.createElement('input');

    objHidden.setAttribute('type', 'hidden');
    objHidden.setAttribute('value', '1');
    objHidden.setAttribute('id', 'virtualbufferupdate');
    objHidden.setAttribute('name', 'virtualbufferupdate');

    objNew.appendChild(objHidden);
    document.body.appendChild(objNew);
}



function updateBuffer()
{
    var objHidden = document.getElementById('virtualbufferupdate');

    if (objHidden)
    {
        if (objHidden.getAttribute('value') == '1')
             objHidden.setAttribute('value', '0');
        else
             objHidden.setAttribute('value', '1');
    }
}


                                               http://juicystudio.com/article/improving-ajax-applications-for-jaws-users.php
Set Focus on Update?




                       http://orbitz.com
Set Focus on Update?




                       http://orbitz.com
Set Focus on Update?
<div id=”tripcost” tabindex=quot;-1quot;>
 // trip cost markup
</div>



onclick:
 document.getElementById('tripcost').focus();
Set Focus on Update?



      Screen Magnifiers?
http://apple.com
http://apple.com
WAI-ARIA
Replicating the Desktop


• <div> can be a button
• <span> can be a slider
• Need a better API
• Leverage accessibility support in the OS
WAI - ARIA

• W3C Web Accessibility Initiative
  Accessible Rich Internet Applications
• Adds hooks into accessibility API of the
  platform
• Define Roles and States so scripts can
  interact with AT APIs
• http://www.w3.org/WAI/
Roles
• link                • application
• combobox, options   • presentation
• checkbox            • group
• radio, radiogroup   • grid, gridcell
• button              • tab, tablist, tabpanel
• progressbar         • list, listitem
• slider              • menu, menubar
• spinbutton          • toolbar
• tree,treeitem       • alert
States

   • checked
   • disabled
   • readonly
   • expanded
   • valuemin, valuemax, valuenow
ARIA
ARIA




       <div role=quot;dialogquot; ... >
ARIA
ARIA




       <div role=quot;dialogquot; ... >
ARIA
ARIA




  <li role=quot;treeitemquot; aria-expanded=quot;truequot; ... >
ARIA
ARIA


<div role=quot;sliderquot; aria-valuemin=quot;1quot; aria-valuemax=quot;5quot; aria-valuenow=quot;1”>
ARIA
ARIA



       <div role=quot;region” aria-live=”polite” ... >
Testing
Testing


 • Do user testing with Assistive Technologies (AT)
 • Developers @#$% at testing interfaces
 • Test with AT to validate decisions
 • Test to make sure its usable
Testing


             Just Ask: Integrating Accessibility
                    Throughout Design

                 Shawn Lawton Henry

          http://www.uiaccess.com/accessucd/
Testing




  http://developer.yahoo.com/yui/theater/
Assistive Technologies

              JAWS: Freedom Scientific


             Window-Eyes: GW Micro



              ZoomText: Ai Squared
Toolbars


   • Lists of headings
   • Text equivalents for images
   • Disable scripting, mouse events
   • Validation and testing tools
   • Zoom
Toolbars


    http://firefox.cita.uiuc.edu/


    http://www.paciellogroup.com/resources/wat-ie-about.html


    http://www.paciellogroup.com/resources/wat-about.html
Color Contrast


• Color Oracle:
    http://colororacle.cartography.ch/


• Colour Analyzer:
    http://juicystudio.com/services/colourcontrast.php
Getting Started


• Start with new features
• Learn the patterns
• Don’t make things worse
• Apply lessons learned when re-factoring existing code
Move away from:

 Making it accessible

Move towards:
  Keeping it accessible
“For most people, technology
makes things easier. For people
with disabilities, technology
makes things possible.”
        - President’s Council on Disability
Traffic Signs



• Traffic sign images are from the
  Manual of Traffic Signs, by
  Richard C. Moeur

• http://www.trafficsign.us
Questions?




 • email: mark@markmeeker.com
 • blog: http://markmeeker.com
 • twitter: @meeker

Weitere ähnliche Inhalte

Was ist angesagt?

HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1
James Pearce
 
Is it time to start using HTML 5
Is it time to start using HTML 5Is it time to start using HTML 5
Is it time to start using HTML 5
Ravi Raj
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
Shumpei Shiraishi
 
Extreme Ria Using Dnn
Extreme Ria Using DnnExtreme Ria Using Dnn
Extreme Ria Using Dnn
schafer_brad
 
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
Clément Wehrung
 

Was ist angesagt? (20)

HTML5 JS APIs
HTML5 JS APIsHTML5 JS APIs
HTML5 JS APIs
 
HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1HTML5 and the dawn of rich mobile web applications pt 1
HTML5 and the dawn of rich mobile web applications pt 1
 
Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]
 
Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]
 
HTML5, just another presentation :)
HTML5, just another presentation :)HTML5, just another presentation :)
HTML5, just another presentation :)
 
SEO AJAX Crawlability in a Responsive Publisher World
SEO AJAX Crawlability in a Responsive Publisher WorldSEO AJAX Crawlability in a Responsive Publisher World
SEO AJAX Crawlability in a Responsive Publisher World
 
Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
 
Is it time to start using HTML 5
Is it time to start using HTML 5Is it time to start using HTML 5
Is it time to start using HTML 5
 
Cartegraph Live HTML, CSS, JavaScript and jQuery Training
Cartegraph Live HTML, CSS, JavaScript and jQuery TrainingCartegraph Live HTML, CSS, JavaScript and jQuery Training
Cartegraph Live HTML, CSS, JavaScript and jQuery Training
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
CSS in React
CSS in ReactCSS in React
CSS in React
 
State of jQuery '09
State of jQuery '09State of jQuery '09
State of jQuery '09
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY
 
CSS pattern libraries
CSS pattern librariesCSS pattern libraries
CSS pattern libraries
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
Introduction to html 5
Introduction to html 5Introduction to html 5
Introduction to html 5
 
Extreme Ria Using Dnn
Extreme Ria Using DnnExtreme Ria Using Dnn
Extreme Ria Using Dnn
 
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
ePub 3, HTML 5 & CSS 3 (+ Fixed-Layout)
 
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
 

Andere mochten auch

Agentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuanAgentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuan
Asier Lemuria
 
forumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddyforumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddy
Dr. Bharat Punjabi
 
Richard presentation march
Richard presentation marchRichard presentation march
Richard presentation march
bbptoronto
 
Rubi Mantilla 2do Deber
Rubi Mantilla 2do DeberRubi Mantilla 2do Deber
Rubi Mantilla 2do Deber
rubigissel
 
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Sue Stone
 
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
andrejusb
 

Andere mochten auch (20)

Untitled Presentation(2)
Untitled Presentation(2)Untitled Presentation(2)
Untitled Presentation(2)
 
Halloween
HalloweenHalloween
Halloween
 
Agentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuanAgentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuan
 
forumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddyforumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddy
 
Richard presentation march
Richard presentation marchRichard presentation march
Richard presentation march
 
Rubi Mantilla 2do Deber
Rubi Mantilla 2do DeberRubi Mantilla 2do Deber
Rubi Mantilla 2do Deber
 
No es Verdad
No es VerdadNo es Verdad
No es Verdad
 
Bookstore
BookstoreBookstore
Bookstore
 
Edtc 245 presentation
Edtc 245 presentationEdtc 245 presentation
Edtc 245 presentation
 
The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)
 
Rezonancija_lbozicevic
Rezonancija_lbozicevicRezonancija_lbozicevic
Rezonancija_lbozicevic
 
Simplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style GuideSimplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style Guide
 
JDay Deutschland 2015 - PHP Design Patterns in Joomla!
JDay Deutschland 2015 - PHP Design Patterns in Joomla!JDay Deutschland 2015 - PHP Design Patterns in Joomla!
JDay Deutschland 2015 - PHP Design Patterns in Joomla!
 
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
 
Monitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access JournalMonitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access Journal
 
The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at
 
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
 
Ansible fest Presentation slides
Ansible fest Presentation slidesAnsible fest Presentation slides
Ansible fest Presentation slides
 
ILM - Pipeline in the cloud
ILM - Pipeline in the cloudILM - Pipeline in the cloud
ILM - Pipeline in the cloud
 
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
 

Ähnlich wie Ajax and Accessibiity

Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
Gabriele Lana
 
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf
 

Ähnlich wie Ajax and Accessibiity (20)

Open and Accessible UI
Open and Accessible UIOpen and Accessible UI
Open and Accessible UI
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
 
Standardizing the Web: A Look into the Why of Web Standards
Standardizing the Web: A Look into the Why of Web StandardsStandardizing the Web: A Look into the Why of Web Standards
Standardizing the Web: A Look into the Why of Web Standards
 
Mojomojo Talk
Mojomojo TalkMojomojo Talk
Mojomojo Talk
 
Html5 public
Html5 publicHtml5 public
Html5 public
 
Beyond the Standards
Beyond the StandardsBeyond the Standards
Beyond the Standards
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
Architectures For Scaling Ajax
Architectures For Scaling AjaxArchitectures For Scaling Ajax
Architectures For Scaling Ajax
 
An in-depth look at jQuery UI
An in-depth look at jQuery UIAn in-depth look at jQuery UI
An in-depth look at jQuery UI
 
Scaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOWScaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOW
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript librariesJazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
 
Markup As An Api
Markup As An ApiMarkup As An Api
Markup As An Api
 
Fundamental Progressive Enhancement [Web Design World Boston 2008]
Fundamental Progressive Enhancement [Web Design World Boston 2008]Fundamental Progressive Enhancement [Web Design World Boston 2008]
Fundamental Progressive Enhancement [Web Design World Boston 2008]
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 
Style Your Site Part 1
Style Your Site Part 1Style Your Site Part 1
Style Your Site Part 1
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
 
GR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with GrailsGR8Conf 2011: Building Progressive UIs with Grails
GR8Conf 2011: Building Progressive UIs with Grails
 
Rapid Prototyping With J Query
Rapid Prototyping With J QueryRapid Prototyping With J Query
Rapid Prototyping With J Query
 
Drupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQueryDrupal 6 JavaScript and jQuery
Drupal 6 JavaScript and jQuery
 
Mozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: BasicMozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: Basic
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Ajax and Accessibiity

  • 1. Merging Ajax and Accessibility Mark Meeker The Rich Web Experience Vienna,VA September 4-6, 2008
  • 2. “ The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.” - Tim Berners-Lee
  • 4. Interaction Patterns • Filters • Rating Widgets • Transitions • Sliders • Auto-complete • Micro-content • Calendar Pickers • Auto-fill • Collapse • Expand / Collapse • Drag and Drop • Inline Validation • Lightboxes • Zoom • Yellow Fade • Navigation • Auto Update • Auto Refresh • Hover • Carrousel • Tabs • Inline edit
  • 5. Ajax is Everywhere http://blaugh.com/2006/08/21/ajax-makes-everything-better/
  • 7. Scope • Blind, low vision, color blindness • Limited mobility • Learning disabilities • Deaf, hearing impaired
  • 8. Scope • Screen readers • Braille displays • Screen magnification • Keyboard only navigation • Speech recognition
  • 10. WCAG 1.0 6.3 Ensure that pages are usable when scripts, applets, or other programmatic objects are turned off or not supported. If this is not possible, provide equivalent information on an alternative accessible page.
  • 13. Progressive Enhancement • Content is king! • Start with POSH - Plain Old Semantic HTML
  • 14. Progressive Enhancement • Content is king! • Start with POSH - Plain Old Semantic HTML • Semantic markup to supply meaning to content
  • 15. Progressive Enhancement • Content is king! • Start with POSH - Plain Old Semantic HTML • Semantic markup to supply meaning to content • Serve base content to everyone
  • 16. Progressive Enhancement • Content is king! • Start with POSH - Plain Old Semantic HTML • Semantic markup to supply meaning to content • Serve base content to everyone • Add presentation and behavior to enhance experience
  • 19. Progressive Enhancement HTML CSS Content Presentation
  • 20. Progressive Enhancement HTML CSS JS Content Presentation Behavior
  • 21. Progressive Enhancement HTML CSS JS Content Presentation Behavior o Frills” “N
  • 22. Progressive Enhancement HTML CSS JS Content Presentation Behavior ills” it Up” No Fr ress “ “D
  • 23. Progressive Enhancement HTML CSS JS Content Presentation Behavior Frills” s it Up” it Sing” “ No “D res “M ake
  • 24. Progressive Enhancement 1 2 3 4 HTML     CSS     JS    
  • 25. The Long Tail • Universality • Multiple Devices • Graded Browser Support • Search Engine Friendly
  • 27. Progressive Enhancement 1 HTML  CSS  JS 
  • 28. <img src=”/map/image” /> <ul> <li><a href=”/map/move?dir=n”>North</a></li> <li><a href=”/map/move?dir=e”>East</a></li> <li><a href=”/map/move?dir=s”>South</a></li> <li><a href=”/map/move?dir=w”>West</a></li> ... </ul> <ul> <li><a href=”/map/zoom?level=1”>Zoom Level 1</a></li> <li><a href=”/map/zoom?level=2”>Zoom Level 2</a></li> <li><a href=”/map/zoom?level=3”>Zoom Level 3</a></li> ... </ul>
  • 29. Progressive Enhancement 2 HTML  CSS  JS 
  • 30. Progressive Enhancement 3 HTML  CSS  JS 
  • 31. Progressive Enhancement 4 HTML  CSS  JS 
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Select from known list: Free form input:
  • 37.
  • 38. 2 HTML  CSS  JS  4 HTML  CSS  JS 
  • 39. 2 HTML  CSS  JS  4 HTML  CSS  JS 
  • 40. Interaction Patterns • Filters • Rating Widgets • Transitions • Sliders • Auto-complete • Micro-content • Calendar Pickers • Auto-fill • Collapse • Expand / Collapse • Drag and Drop • Inline Validation • Lightboxes • Zoom • Yellow Fade • Navigation • Auto Update • Auto Refresh • Hover • Carrousel • Tabs • Inline edit
  • 41. Interaction Patterns • Filters • Rating Widgets • Transitions • Sliders • Auto-complete • Micro-content • Calendar Pickers • Auto-fill • Collapse • Expand / Collapse • Drag and Drop • Inline Validation • Lightboxes • Zoom • Yellow Fade • Navigation • Auto Update • Auto Refresh • Hover • Carrousel • Tabs • Inline edit
  • 42. Hijax • Term coined by Jeremy Keith • Bulletproof Ajax (http://bulletproofajax.com/) • Pull in portion of page via Ajax when XHR is supported • Re-use same portion when a full page refresh is required
  • 43. Hijax Header Module 1 Rail Module 2 Footer
  • 44. Hijax Header Module 1 Rail Module 2 Footer noscript page transition
  • 45. Hijax Header Module 1 Rail Module 2 Footer noscript Login page Module transition
  • 46. Hijax Header Module 1 JS-Enabled Rail XHR Module 2 Footer noscript Login page Module transition
  • 47. Hijax Header Login Module Module 1 JS-Enabled Rail XHR Module 2 Footer noscript Login page Module transition
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53. JS-Enabled XHR no-script page transition
  • 54.
  • 55.
  • 56.
  • 58. Redundant Inputs • Offer multiple input options • GUI input and keyboard input • Enhance visual cues with text-based cues • Look to desktop interfaces for patterns • Seek out CLI developers for testing
  • 59. Redundant Inputs http://netflix.com
  • 60. Redundant Inputs http://developer.yahoo.com/yui/examples/
  • 62. Linearization http://ebookers.com
  • 63. Linearization http://ebookers.com
  • 64. Linearization State/ Zip/Postal Examples Province Code No Yes United Kingdom, France, Germany Drop Down Yes United States, Canada, Australia Input Yes No No Ireland
  • 66. Linearization http://basecamphq.com
  • 67. Linearization http://basecamphq.com
  • 68. Focus
  • 69. Focus <input> <div> <a> vs. <td> <button> <img>
  • 70. Real Link? http://ebookers.com
  • 71. Real Checkbox? http://amazon.com
  • 72. Real Checkbox? 1 2 3 4 5 6 7 8 9 http://amazon.com
  • 73. Real Checkbox? 1 2 3 4 5 6 7 8 9 http://amazon.com
  • 74. Is that a button? http://apple.com
  • 75. Tab Index Focusable with mouse or Tab Index Navigable via tab key element.focus() Follows default behavior of Follows default behavior of Not present element (only form controls element and anchors receive focus) Tabindex value directly >0 Yes specifies where this element is positioned in the tab order. In tab order relative to 0 Yes element’s position in document -1 Yes Not in tab order. http://www.dojotoolkit.org/book/export/html/118
  • 76. Where to Next? http://facebook.com
  • 78. Updates http://finance.yahoo.com/
  • 79. Updates http://finance.yahoo.com/
  • 80. Updating the Buffer function prepareBuffer() { var objNew = document.createElement('p'); var objHidden = document.createElement('input'); objHidden.setAttribute('type', 'hidden'); objHidden.setAttribute('value', '1'); objHidden.setAttribute('id', 'virtualbufferupdate'); objHidden.setAttribute('name', 'virtualbufferupdate'); objNew.appendChild(objHidden); document.body.appendChild(objNew); } function updateBuffer() { var objHidden = document.getElementById('virtualbufferupdate'); if (objHidden) { if (objHidden.getAttribute('value') == '1') objHidden.setAttribute('value', '0'); else objHidden.setAttribute('value', '1'); } } http://juicystudio.com/article/improving-ajax-applications-for-jaws-users.php
  • 81. Set Focus on Update? http://orbitz.com
  • 82. Set Focus on Update? http://orbitz.com
  • 83. Set Focus on Update? <div id=”tripcost” tabindex=quot;-1quot;> // trip cost markup </div> onclick: document.getElementById('tripcost').focus();
  • 84. Set Focus on Update? Screen Magnifiers?
  • 85.
  • 86.
  • 87.
  • 88.
  • 92. Replicating the Desktop • <div> can be a button • <span> can be a slider • Need a better API • Leverage accessibility support in the OS
  • 93. WAI - ARIA • W3C Web Accessibility Initiative Accessible Rich Internet Applications • Adds hooks into accessibility API of the platform • Define Roles and States so scripts can interact with AT APIs • http://www.w3.org/WAI/
  • 94. Roles • link • application • combobox, options • presentation • checkbox • group • radio, radiogroup • grid, gridcell • button • tab, tablist, tabpanel • progressbar • list, listitem • slider • menu, menubar • spinbutton • toolbar • tree,treeitem • alert
  • 95. States • checked • disabled • readonly • expanded • valuemin, valuemax, valuenow
  • 96. ARIA
  • 97. ARIA <div role=quot;dialogquot; ... >
  • 98. ARIA
  • 99. ARIA <div role=quot;dialogquot; ... >
  • 100. ARIA
  • 101. ARIA <li role=quot;treeitemquot; aria-expanded=quot;truequot; ... >
  • 102. ARIA
  • 103. ARIA <div role=quot;sliderquot; aria-valuemin=quot;1quot; aria-valuemax=quot;5quot; aria-valuenow=quot;1”>
  • 104. ARIA
  • 105. ARIA <div role=quot;region” aria-live=”polite” ... >
  • 107. Testing • Do user testing with Assistive Technologies (AT) • Developers @#$% at testing interfaces • Test with AT to validate decisions • Test to make sure its usable
  • 108. Testing Just Ask: Integrating Accessibility Throughout Design Shawn Lawton Henry http://www.uiaccess.com/accessucd/
  • 110. Assistive Technologies JAWS: Freedom Scientific Window-Eyes: GW Micro ZoomText: Ai Squared
  • 111. Toolbars • Lists of headings • Text equivalents for images • Disable scripting, mouse events • Validation and testing tools • Zoom
  • 112. Toolbars http://firefox.cita.uiuc.edu/ http://www.paciellogroup.com/resources/wat-ie-about.html http://www.paciellogroup.com/resources/wat-about.html
  • 113. Color Contrast • Color Oracle: http://colororacle.cartography.ch/ • Colour Analyzer: http://juicystudio.com/services/colourcontrast.php
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119. Getting Started • Start with new features • Learn the patterns • Don’t make things worse • Apply lessons learned when re-factoring existing code
  • 120. Move away from: Making it accessible Move towards: Keeping it accessible
  • 121. “For most people, technology makes things easier. For people with disabilities, technology makes things possible.” - President’s Council on Disability
  • 122. Traffic Signs • Traffic sign images are from the Manual of Traffic Signs, by Richard C. Moeur • http://www.trafficsign.us
  • 123. Questions? • email: mark@markmeeker.com • blog: http://markmeeker.com • twitter: @meeker