More on FLUID-3590

Antranig Basman antranig.basman at colorado.edu
Thu Apr 8 12:33:31 UTC 2010


This morning's look at 3590 I think has brought me closer to 
understanding the problem... unfortunately the best understanding now is 
that I can no longer think of a way of resolving it.

The key change in the "new" browsers appears to be the computation of 
default tabindex order, as I suggested last night... however, the 
crucial change appears to be in the treatment of elements whose tabindex 
is explicitly set to -1. As you may recall, this is the strategy used in 
the Reorderer to explicitly remove the reordered elements from tabindex 
sequence.
It appears (at least in Firefox 3.6) that if focus is programmatically 
set onto an element with tabindex -1, the browser considers that the 
"focus location" is now in fact at the head of the document. This causes 
the next tabbed element to become the first default tabbable control in 
the window, leading to the environment-dependent "focus trapping" 
behaviour reported in the JIRA. Setting a tabindex of 0 removes this 
behaviour, but then of course causes each of the elements to be tabbable.

No "moral" way out of this problem is apparent. We could start to 
consider "immoral" ones such as embedding a hidden tabbable element 
after the reorderer for the purpose of explicitly throwing focus onto 
when we are trying to navigate out. From experience, efforts like these 
usually end up confusing screenreaders further. Likewise, "live" 
tabindex manipulations have been ruled out.

The only idea that comes to mind is to, on receiving "tab" whilst 
focused on an element, to programmatically throw focus back to the 
container and then try to synthesize a tab event directed at it. Given 
this problem only occurs on "modern" browsers, and that these are the 
ones that have proven slightly more amenable to "realistic event 
simulation" this has at least some chance of success...



More information about the fluid-work mailing list