[whatwg] Focus management

Some web applications may need more control over focus than is offered  
by
the existing focus management proposal:
<http://www.whatwg.org/specs/web-apps/current-work/#focus>

Specifically, it's hard to write JavaScript that has more explicit  
control
over focus changes. Functionality that is missing (but often included in
native UI toolkits) includes:

* Focus chain queries
     need the ability to ask the document what the next/previous  
focusable
     element is from a given element, or from null (first/last focusable
     element).

* Is element focusable
     need to be able to ask an element if it can take focus.  
Focusability is
     currently some function of element type, tabindex, visibility,
     contentEditability, UA preferenes etc, and it's hard to write JS
     that computes this.

* Explicit advance/rewind focus
     need to be able to move focus to the next/previous focusable
     element without having explicit knowledge of what the next
     element is (this mirrors what happens when the user hits the Tab
     or Shift-Tab keys).

     (If nextFocus()/previousFocus() are available, this could be  
achieved with
         document.nextFocus(document.activeElement).focus(),
      but that seems a little long-winded.)

In addition, I'd like to see a few clarifications in the "Focus  
management"
section of the Web Applications draft:

* What does focus() do on an unfocusable element? Does the previously
   focused element remain focused?

* document.activeElement has some ambiguities:
     - Is it valid when the window does not have focus?
     - IE has a setActive() method that changes the activeElement, but
         does not change the focus. So the activeElement is not always
         the focused element.

* how does display: none or visibility: hidden interact with focus?
     - if a focused element becomes unrendered, does focus move to the
       next focusable element?
     - can non-rendered elements be focused?

Finally I'd like to see some discussion around focus() and window  
activation.
window.focus() obviously (and annoyingly) activates the window, but  
should
focussing an element inside a window raise the window? What happens if
that window is a hidden tab in a tabbed browser?

Simon

Received on Friday, 4 May 2007 13:26:21 UTC