Ian Hickson wrote:
2. Replacing ad-hoc DHTML menus with something accessible yet stylable.
Sites like kelloggs.com and target.com are great examples of such menus and their problems today.

I agree with Anne that lists are already the best method of implementing these navigational menus.

3. Replacing ad-hoc menu buttons, as seen in the folder view of Yahoo! mail (the "Mark" button, for instance) or of msn Hotmail (the "Put in Folder" button, for instance), and abuse of the <select> widget to get similar effects, as seen in GMail (the "More Actions..." dropdown, for instance) or United Media's comics sites (the "Comics List" dropdown on, e.g., dilbert.com), with something more accessible.

While I don't agree with the abuse of select elements for navigational menus and the spec should not encourage such markup, I somewhat agree with their use for command menus such as the hotmail, gmail and yahoo examples. The United Media comic sites seem to be navigational menus and are abuse of the select element.

The difference is that navigational menus are just links, but the command menus actually perform a function (like "mark as read", "move to folder", etc. in various email apps). For such commands, links are inappropriate markup, forms controls/buttons are better.

The only problems I have with their use is:
a) common implementations require the use of javascript to function properly, however good sites should provide submit buttons to perform the same function without JS enabled.

b) The use of onchange causes significant problems with keyboard selection, as the event is typically fired for every change, rather than just the user's final selection. This, however, is probably more of an implementation issue. e.g. if the UA expaned the menu when the user pressed the down arrow and didn't finalise the selection until the user pressed enter or tabbed away from the control, that might solve this problem.

4. Replacing ad-hoc DHTML context menus with something more accessible,
   that doesn't necessarily replace the UA's own context menus.

If the spec were to address this kind of menu, then it must not completely override the UAs own context menu. However, since these aren't really discoverable until the user right clicks to do something, only to discover their expected menu has been replaced (or at least modified) it may be more of an annoyance than a useful feature. Of course, that doesn't stop authors attempting them already using JS.

If we ignore 1 as being out of scepe, then we see that 2, 3, and 4 are really just variations on the same theme. For example, menu buttons are, in practice, just attempts to make context menus more discoverable; the only difference is how you invoke them. Furthermore, most DHTML menus consist of just a lot of menu buttons side by side.

I disagree, I see use cases 2 and 3 as completely separate (as described above), not just variations of each other.

Matthew has pretty much convinced me that trying to grandfather the current DHTML menu syntaxes into the new markup is not worth it, so we can ignore that requirement.

Could you please explain what "grandfather the current DHTML menu syntaxes into the new markup" means or references to a few of Matthew's specific posts describing the issue?

Anybody got any better ideas?

How about this, or some variation of:

<form ...>
<menubar>
  <li><button type="submit" for="foo" name="menu">Foo</button>
      <select id="foo" name="foo">
        ...
      </select>
  </li>
  <li><button type="submit" for="bar" name="menu">Bar</button>
      <select id="bar" name="bar">
        ...
      </select>
  </li>
</menubar>
</form>

-- Behaviour in Current UAs --

* User selects item from select menu, button submits it.
* Con: Submit button occurs before form control, though they typically occur after, which may be bad for usability in current/older UAs (could be changed with CSS, I guess). * Very good support for UAs without JS (assuming the server side processing has been implemented to support it)
Values submitted as:

?menu=Foo&foo=value&bar=value

The server can use the name of the submitted button to determine which menu item matters.

Or, JavaScript can handle the onchange event in the select element instead of submitting the form.

-- WA1 UAs --

* Button expands menu, and the form is submitted upon selection OR javascript handles it and cancels the form submission. * Should also work with <input type="submit">, which is supported better by IE.

--
Lachlan Hunt
http://lachy.id.au/

Reply via email to