你能绑定一个事件来访问密钥吗?

时间:2014-08-18 10:04:04

标签: javascript html events accessibility

正如您可能知道的那样,在HTML中有accesskey属性,它允许您为元素分配键,以便您可以直接使用键盘触发/聚焦它们,而无需先键入它们。

现在我想知道,如果你可以将一个JS事件绑定到那个确切的...事件,或者你必须采用老式的方式并监听onkeypress(例如)然后检查关键组合?

后者会因为browsers have different key combinations to trigger access keys而失败。

我的想法是为(大型菜单)导航分配一个访问键,它会展开并聚焦它,这样你就可以通过链接进行选项卡。这样我就可以将导航放在HTML的末尾,这样用户就无需在实际内容区域中的链接到达数百个链接之前(夸大)。

1 个答案:

答案 0 :(得分:4)

没有这样的事件,例如没有onAccessKey事件,你必须挂钩其中一个onkey *事件。

但是,当使用accesskey时,accesskey会触发元素的某些激活事件(使用chrome和firefox进行测试)。因此,您可以像平常一样使用这些事件,就好像用户点击,关注,更改了UI的那一部分一样。

  1. 显示元素,即div,span等:
    • 的onclick
  2. 输入元素,即text,textarea:
    • onfocus,如果以前没有聚焦
    • 在某些浏览器中点击
  3. 输入元素,即收音机,复选框:
    • onfocus,如果以前没有聚焦
    • 的onclick
    • onchange,如果以前没有检查过
  4. 选择元素:
    • onfocus,如果以前没有聚焦
    • onclick,如果之前没有选择
  5. 选择元素选项(在select元素上触发):
    • onfocus,如果选择框未预先聚焦
    • onclick,如果之前未选择选择框
    • onchange,如果之前未选择选项
  6. JSFiddle demo

    使用它打开菜单的一个例子

    HTML

    <div id="menu">
        <div id="menuBtn" accesskey="r">Menu</div>
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
        </ul>    
    </div>
    

    JS

    jQuery("#menuBtn").click(function(){
       jQuery(this).next().toggle(); 
    });
    

    JSFiddle Demo