browser - 防止选项卡在地址栏中循环

标签 browser user-interface accessibility

我意识到这可能是一个可访问性问题,最好不要理会,但我想弄清楚是否有可能阻止选项卡在选项卡循环中访问地址栏。

我的应用程序有另一种循环输入区域的方法,但许多新用户本能地尝试使用该选项卡,但并没有按预期工作。

最佳答案

这是一个通用的 jquery 实现,您不必在其中找到最大选项卡索引。请注意,如果您在 DOM 中添加或删除元素,此代码也将起作用。

$('body').on('keydown', function (e) {
    var jqTarget = $(e.target);
    if (e.keyCode == 9) {

        var jqVisibleInputs = $(':input:visible');
        var jqFirst = jqVisibleInputs.first();
        var jqLast = jqVisibleInputs.last();

        if (!e.shiftKey && jqTarget.is(jqLast)) {
            e.preventDefault();
            jqFirst.focus();
        } else if (e.shiftKey && jqTarget.is(jqFirst)) {
            e.preventDefault();
            jqLast.focus();
        }
    }
});

但是,您应该注意上面的代码仅适用于可见输入。一些元素即使没有输入也可能成为文档的 activeElement 所以如果是你的情况,你应该考虑将它们添加到 $(':input:visible')选择器。

我没有添加代码来滚动到焦点元素,因为这可能不是每个人都想要的行为......如果你需要它,只需在调用 focus() 之后添加它。

关于browser - 防止选项卡在地址栏中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15355948/

相关文章:

java - 似乎无法锁定我的 Jbutton。错误 : Cannot find symbol

ios - 在启动屏幕中执行代码

java - 是否可以在最小化 JFrame 之前执行某些操作?

c# - 如何像这个程序一样在 Windows 中覆盖最大 32x32 鼠标大小

accessibility - 有特殊需要的人的发展

java - 在 htmlunit 中读取网页的移动版本

vb.net - HtmlAgilityPack 获取页面标题和 H1 标签

javascript - 为什么把script标签放在body标签的末尾比较好?

swift - 从 native MacOS 应用程序访问 Web 浏览器选项卡并读取网站信息

Android - 使用 SYSTEM_OVERLAY 改变触摸事件