[Building Sakai] Inaccessible Keyboard Navigation Issue - select elements with onchange="blur()"

Richwine, Brian L brichwin at indiana.edu
Mon Oct 18 16:42:41 PDT 2010


Hi,

I am working on a significant accessibility issue where forms containing select elements with calls to blur() are not easily navigable by keyboard only users. I want to double check the solution we are proposing for this issue, because I lack the historical knowledge of Sakai's previous development that is needed to understand fully why calls to HTML element's blur() method were added to Sakai's code.

The Issue:
When using Internet Explorer and changing the setting of a select element containing onchange="blur()", visual focus indication disappears, and (in IE) the user must start navigating through the page's controls from the beginning instead of the next control in the natural tab order. This is because when the select element's value is changed, the onchange event handler calls blur() on the element and tells it to give up focus. In Internet Explorer, apparently that means the keyboard focus resets and starts from the beginning of the tab order. This is very frustrating to keyboard users who must then tab through the controls over and over again simply to complete a form. This is also very confusing, especially to low-vision, blind, and cognitively impaired users who (reasonably) expect to be able to tab to the next control. Unsighted users will especially find this frustrating, as they do not have the benefit of observing the visual indication of focus to find out where they are on the page.

This issue is perhaps best explained by example, so I've created a short (4.5 minute) video demonstration:
http://screencast.com/t/Kzwg3ZcS03c

I've been told two different reasons for the calls to blur() being used in Sakai:
  1.)  Netscape Navigator 4 had a bug that prevented changes to form controls from taking place on form submission unless modified controls had lost their focus. So, onchange event handlers needed to drop the select element's focus before submitting the form.
 2.) Blur() was being used to prevent the mouse wheel from scrolling a select element's value after a mouse was used to change it.

As for reason number one, I'm assuming Netscape Navigator 4 is no longer being supported by Sakai. 

I've tested IE 7, IE 8, IE 9, Opera 10, Chrome, Firefox 3, and Firefox 3.6 on Windows; and Safari and Firefox on Mac OS/X and found that turning the mouse wheel no longer changes a select element's value after it has been set. So, suggested reason number two no longer seems to be a problem.

To my knowledge, using blur() in onchange or onclick events is not a common programming practice. My suggestion is to simply remove it from the onchange event handlers it appears in. Gonzalo has created an umbrella JIRA issue for this: http://jira.sakaiproject.org/browse/SAK-18958. I've created patches (see the sub tasks) which remove calls to blur() where it appears in any onchange and onclick attribute.

Before I move toward getting these patches applied for verification, I wanted to see if anyone in the Sakai community knows any reason the calls to blur() should remain.

Thanks,
  Brian Richwine


Brian Richwine
Sakai Accessibility Working Group Lead
Adaptive Technology and Accessibility Centers
Indiana University - Bloomington/Indianapolis
http://iuadapts.indiana.edu
(812) 856-4112






-----Original Message-----
From: sakai-dev-bounces at collab.sakaiproject.org [mailto:sakai-dev-bounces at collab.sakaiproject.org] On Behalf Of Patrick Coleman
Sent: Monday, October 18, 2010 10:31 AM
To: sakai-dev at collab.sakaiproject.org
Subject: Re: [Building Sakai] "mvn clean install" warnings


I got no replies regarding the warnings I'm getting? Download and went through install instructions again but still getting them.

Anyone have any ideas?

Thanks.

Pat.


Patrick Coleman wrote:
> 
> 
> When I run mvn clean install it finishes with "Success" but in the 
> output I get the following errors.
> 
> Can I ignore them?
> 
> I did try and run
> 
>  mvn clean install sakai:deploy -Dmaven.tomcat.home=/usr/local/tomcat
> 
> But got many errors like the second set below.
> 
> Thanks.
> 
> Pat.
> 
> [WARNING]
> [WARNING] Some problems were encountered while building the effective 
> model for org.sakaiproject:master:pom:2.7.1 [WARNING] 
> 'dependencyManagement.dependencies.dependency.(groupId:artifactId:type:classifier)'
> must be unique: javax.jcr:jcr:jar -> version 1.0 vs 
> ${sakai.jcr.version} @ line 506, column 25 [WARNING] 
> 'build.plugins.plugin.version' for 
> org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 
> 1044, column 21 [WARNING] The expression ${artifactId} is deprecated. 
> Please use ${project.artifactId} instead.
> [WARNING] The expression ${version} is deprecated. Please use 
> ${project.version} instead.
> [WARNING] 'reporting.plugins.plugin.version' for 
> org.apache.maven.plugins:maven-javadoc-plugin is missing. @ line 921, 
> column 21 [WARNING] 'reporting.plugins.plugin.version' for 
> org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 938, 
> column 21 [WARNING] 'reporting.plugins.plugin.version' for 
> org.apache.maven.plugins:maven-pmd-plugin is missing. @ line 949, 
> column
> 21
> [WARNING] 'reporting.plugins.plugin.version' for 
> org.codehaus.mojo:changelog-maven-plugin is missing. @ line 972, 
> column 21 [WARNING] 'reporting.plugins.plugin.version' for 
> org.codehaus.mojo:taglist-maven-plugin is missing. @ line 982, column 
> 21 [WARNING] 'reporting.plugins.plugin.version' for 
> org.codehaus.mojo:jdepend-maven-plugin is missing. @ line 994, column 
> 21 [WARNING] 'reporting.plugins.plugin.version' for 
> org.codehaus.mojo:jxr-maven-plugin is missing. @ line 999, column 21 
> [WARNING] 'reporting.plugins.plugin.version' for 
> net.sourceforge.maven-taglib:maven-taglib-plugin is missing. @ line 
> 1009, column 21 [WARNING] 'distributionManagement.repository.id' must 
> not be 'local', this identifier is reserved for the local repository, 
> using it for other repositories will corrupt your repository metadata. 
> @ line 117, column 17 [WARNING] [WARNING] It is highly recommended to 
> fix these problems because they threaten the stability of your build.
> [WARNING]
> [WARNING] For this reason, future Maven versions might no longer 
> support building such malformed projects.
> [WARNING]
> 
> 
> 
> 
> 
> [INFO] Scanning for projects...
> [ERROR] The build could not read 8 projects -> [Help 1]
> [ERROR]   
> [ERROR]   The project
> org.sakaiproject.content:content-providers-impl:2.7.1
> (/Volumes/Data1/SakaiUpgrade2.1.1/sakai-src-2.7.1/content/content-impl
> -providers/impl/pom.xml)
> has 1 error
> [ERROR]     Non-resolvable parent POM: Failure to find
> org.sakaiproject.content:content:pom:2.7.1 in
> http://repo1.maven.org/maven2 was cached in the local repository, 
> resolution will not be reattempted until the update interval of 
> central has elapsed or updates are forced and 'parent.relativePath' 
> points at wrong local POM @ line 4, column 11 -> [Help 2]
> [ERROR]   
> 
> 
> 

--
View this message in context: http://old.nabble.com/%22mvn-clean-install%22-warnings-tp29946354p29991050.html
Sent from the Sakai - Development mailing list archive at Nabble.com.

_______________________________________________
sakai-dev mailing list
sakai-dev at collab.sakaiproject.org
http://collab.sakaiproject.org/mailman/listinfo/sakai-dev

TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"


More information about the sakai-dev mailing list