当前位置:首页 > 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 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…