有没有办法阻止HTML的accesskey =""从被激活?

时间:2014-03-26 19:03:57

标签: javascript html5 dom accessibility wai

我试过preventDefault(),但我没有成功。有什么东西我不见了吗?

如果可能的话,我会尝试全局禁用它(比如在window上注册事件)

3 个答案:

答案 0 :(得分:11)

似乎没有办法阻止事件触发。唯一的替代方法似乎是在您不希望它们工作时暂时删除accesskey属性。这就是jQuery UI has to do for modal dialogs

以下是该主题的代码:

$("#boxA-dialog").dialog({
    autoOpen: false,
    modal: true,
    height: 400,
    width: 300,
    open: function(event, ui) {
        ak = $('[accesskey]').each(function() {
            $(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
        })
    },
    close: function(event, ui) {
        ak.each(function() {
            $(this).attr('accesskey', $(this).data('ak'))
        })
    }
});

正如您所看到的那样,在删除jQuery数据之前将其保存为jQuery数据:

$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')

然后从数据中恢复它们:

$(this).attr('accesskey', $(this).data('ak'))

我对实际阻止事件的解决方案感兴趣,而不是使用此解决方法。

答案 1 :(得分:0)

如果我能正确理解你的问题,你可以尝试一下。

$('[accesskey*=]').focus(function(e) { 
    // disable accesskey functionality 
});
$('[accesskey*=]').blur(function(e) { 
    // reenable accesskey functionality 
});

答案 2 :(得分:0)

使用上一个答案,您可以使用此技巧来删除"所有" accesskey"页面中的选项。

$('[accesskey*=]').attr('accesskey','');

只需在页面上设置所有访问密钥即可。