作为表单交互设计的一个基本元素,accesskey属性在windows面板中使用得很多,可我们的程序员们却都对它不感兴趣,当然这和我们的非拼音文字有很大的关系。但如果是类似电信营业、财务等需要大量录入的系统,只用鼠标显然是愚蠢的。当然 tab 和→←↑↓也可以满足很多需求。简单地理解就是 — 没有鼠标,一样也可以自由的在网页中穿行。
下面只说 accesskey
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
在windows中,按 alt+n 键切换焦点到 oName 表单域中;Mac,按 ctrl+n;opera 是个特例,需要 shift+ESC+n 。
类似地,链接也可以通过这样的操作来获得(甚至直接触发)焦点。
当然,用户不可能看源代码去找这个 accesskey,所以我们需要在表单中注明:
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
进一步,可以通过样式表 :after 来减少代码量。很遗憾,IE 6 看不到效果。
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
这里有个小问题需要解释一下。很多采用网页新标准的 blog 会使用 1,2,3…做为主导航的 accesskey,这在opera下面会有问题,因为 opera 的功能键是 shift+ESC,因为shift所以 1 不起作用,!可以。用opera看下面小例子,其它浏览器没有这个问题。
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
还可以通过 title 来提示用户可使用的 accesskey
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
为了代码更漂亮更简洁,可以js 来自动装换 accesskey -> title,这是导航菜单
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
加入提示效果后:
function ua(str){
haveUa=navigator.userAgent.toLowerCase().indexOf(str)+1;
return haveUa;
}
window.onload=function(){
if (document.getElementsByTagName){
oLinks=document.getElementsByTagName("a");
for(i=0;i if(ua("opera")){ oLinks[i].setAttribute("title","快捷方式:Shift+Esc+"+oLinks[i].getAttribute("accesskey")) }else if(ua("mac")){ oLinks[i].setAttribute("title","快捷方式:Ctrl+"+oLinks[i].getAttribute("accesskey")) }else if(ua("win")){ oLinks[i].setAttribute("title","快捷方式:Alt+"+oLinks[i].getAttribute("accesskey")) } } } }
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
Leave a reply