Javascript 有没有办法防止HTML';s accesskey="&引用;从被激活?

Javascript 有没有办法防止HTML';s accesskey="&引用;从被激活?,javascript,html,dom,accessibility,wai,Javascript,Html,Dom,Accessibility,Wai,我尝试了preventDefault(),但没有成功。有什么我遗漏的吗 如果可能的话,我会尝试全局禁用它(比如在窗口注册事件)似乎没有办法阻止事件触发。唯一的选择似乎是在您不希望accesskey属性工作时临时删除它们。就是这样 以下是该线程的代码: $("#boxA-dialog").dialog({ autoOpen: false, modal: true, height: 400, width: 300, open: function(event,

我尝试了
preventDefault()
,但没有成功。有什么我遗漏的吗


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

似乎没有办法阻止事件触发。唯一的选择似乎是在您不希望accesskey属性工作时临时删除它们。就是这样

以下是该线程的代码:

$("#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'))
        })
    }
});
正如您所看到的,在删除accesskey属性之前,它将这些属性保存到jQuery数据中:

$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey')
然后从数据中恢复它们:

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

我感兴趣的是一种能够真正防止事件发生的解决方案,而不是使用此解决方法。

如果我正确理解您的问题,您可以尝试此方法

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

使用前面的答案,您可以使用此技巧从页面中“删除”所有“accesskey”选项

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

只需将页面上的所有accesskey设置为空。

键组合取决于平台,但我说的是html accesskey为什么不删除属性?我认为这会影响可访问性。。。这是唯一的选择吗?呃。。。?它是否会产生与
preventDefault()
相同的影响(假设
preventDefault()
能够工作)?属性可以通过JS删除/返回,如果这是你的观点,你不必从文件中删除它们。你的解决方案确实会影响可访问性。因为屏幕阅读器会说,例如,“保存按钮alt+S”,但当用户按下alt+S时,由于您的
preventDefault()
或其他原因,不会发生任何事情。因此,只需删除
accesskey
属性。那就太晚了,因为此时处于焦点的任何元素都会失去焦点。不过,您可能需要恢复这些属性。但这不是问题所在。所以没有必要把它复杂化,不是吗?如果它们只是要被移除,它们一开始就不应该在那里。我假设Wes使用“prevent”这个词,他只希望在某些条件下阻止它们,如果不满足这些条件,它们应该正常工作。然后他只需要在jQuery函数周围设置条件。不难实现,无论如何,wes没有选择/回答线程,所以让我们把它留在那里。除非你找到了“解决办法”。我会感兴趣的!我想我解释得不太清楚。当我说“在某些条件下”,我的意思是在不同的时间点AccessKey应该和不应该工作。因此,在某个时间点,您可能希望删除accesskey,然后,您可能希望恢复它。因此,在jQuery周围设置一个条件是行不通的;它不提供稍后恢复属性的方法。