当前位置:首页 > JavaScript

js实现tab跳转

2026-02-02 17:08:13JavaScript

使用JavaScript实现Tab跳转

通过监听键盘事件实现Tab键跳转功能,以下是两种常见实现方式:

方法一:基础事件监听

通过keydown事件监听Tab键(keyCode为9),阻止默认行为并手动聚焦下一个元素。

document.addEventListener('keydown', function(e) {
  if (e.key === 'Tab') {
    e.preventDefault();
    const focusableElements = document.querySelectorAll('a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])');
    const currentIndex = Array.from(focusableElements).indexOf(document.activeElement);
    const nextIndex = (currentIndex + 1) % focusableElements.length;
    focusableElements[nextIndex].focus();
  }
});

方法二:增强版循环跳转

添加Shift键判断实现反向跳转,并处理边界情况。

document.addEventListener('keydown', function(e) {
  if (e.key !== 'Tab') return;

  const focusable = Array.from(
    document.querySelectorAll('a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])')
  ).filter(el => !el.disabled && !el.hidden);

  if (!focusable.length) return;

  e.preventDefault();
  const currentIndex = focusable.indexOf(document.activeElement);
  let nextIndex = 0;

  if (currentIndex >= 0) {
    const direction = e.shiftKey ? -1 : 1;
    nextIndex = (currentIndex + direction + focusable.length) % focusable.length;
  }

  focusable[nextIndex].focus();
});

注意事项

  1. 确保目标元素具有tabindex="0"(如自定义组件)
  2. 隐藏/禁用元素应排除在跳转队列外
  3. 对于单页应用,需要在动态内容加载后重新绑定事件
  4. 可结合CSS伪类:focus-visible优化视觉反馈
[tabindex]:focus-visible {
  outline: 2px solid #4285f4;
}

扩展方案

对于复杂场景可考虑使用第三方库如:

js实现tab跳转

  • focus-trap-react(React专用)
  • a11y-dialog(模态框场景)
  • tabbable(获取可聚焦元素列表)

标签: 跳转js
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转可以通过多种方式,以下是常见的几种方法: 使用 router-link 组件 router-link 是 Vue Router 提供的组件,用于…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…