使用JavaScript,您如何判断用户是否向后跳转?

时间:2011-05-26 11:00:26

标签: javascript keyboard accessibility

我有一个HTML链接,我希望在用户选中它时采取一些操作 - 但前提是用户通过文档向前跳转而不是向后。

是否有一种可靠的跨浏览器方式来检测用户在文档中选择哪种方式,或者实际上他们是否正在浏览文档?我绑定到blur事件,但这并不一定意味着用户正在进行标记。

我已经看过检查源中前一个可聚焦元素的document.activeElementhasFocus属性的值,但是:

  1. 这些似乎是相对较新的补充,因此可能得不到广泛支持,
  2. 我不确定在blur事件发生时它们是否可以被检查,因为即使用户是标签,我也不认为下一个元素会被关注。

2 个答案:

答案 0 :(得分:7)

您必须在链接上处理keydown事件。

$("your link selector").keydown(function(evt){
    if (evt.which === 9)
    {
        if(evt.shiftKey === true)
        {
            // user is tabbing backward
        }
        else
        {
            // User is tabbing forward
        }
    }
});

选中此JSFiddle example检测特定链接上的向前和向后标签。

  

Sidenote :虽然我在答案中提供了jQuery代码,但您没有在问题上指定jQuery标记。既然你持有Javascript以及jQuery徽章,我想你将我的代码转换为纯Javascript将是微不足道的。

答案 1 :(得分:1)

作为Robert的良好解决方案的替代方案,也许您可​​以利用tabindex属性?将其设置为您的html链接和其他“tabbable”项目。然后在javascript中查看。

使用tabindex的解决方案:jsfiddle

  

副作用:元素也会对鼠标点击做出反应。他们会表现得很好。因此,根据您的需要,这可能是一个很好的副作用或副作用。