Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

revealjs tabset tabs get positive tabindex values

オープン 初心者向け
#14,970 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
88/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
javascript

調査の方向性

src/resources/formats/html/tabby/js/tabby.js の314~336行目付近から始め、提供されている3枚のスライドの revealjs QMD 例を使って問題を再現します。revealjs の tabset タブに正の tabindex 値が付与されなくなっていることと、キーボードフォーカスが表示中のスライドの DOM 順序に従うことを確認します。

索引モデルが issue の本文から書いたものです。

説明

accessibility revealjs

I have:

  • searched the issue tracker for similar issues
  • installed the latest version of Quarto CLI
  • formatted my issue following the Bug Reports guide

Bug description

In a revealjs deck, tabset tabs get tabindex="1", "2", and so on. Positive values put the tabs before all other content in the Tab order. As a result, on the 2 slides before a tabset, the first Tab moves focus to a tab on a slide that is not visible. This breaks WCAG 2.2 SC 2.4.3 Focus Order.

  • Cause: when body.reveal-viewport is present, Quarto's copy of tabby.js gives each tab, and each focusable element in each tab panel, the next positive tabindex (tabby.js#L314-L336, from a174f59).
  • Impact: keyboard users lose focus to a tab on a slide that is not visible. There is no visible focus and no slide change.
  • Fix: use tabindex="0" in revealjs too (the non-reveal branch), or a roving tabindex (0 on the selected tab, -1 on the others).

Related: #14795 (off-screen slides stay in the tab order). Positive tabindex makes that problem worse, because the tabs come before the content of the current slide.

AI note: I used an AI assistant to investigate. Its findings are grounded in a local clone of quarto-cli.

Steps to reproduce

---
format: revealjs
---

## Slide 1

Plain slide.

## Slide 2

Plain slide.

## Slide 3

::: {.panel-tabset}

### Tab A

Content A

### Tab B

Content B

:::
  1. Render the file and open it in Chrome.
  2. On slide 1, press Tab.
  3. Go to slide 2, then press Tab.

Actual behavior

  • On slide 1, focus moves to "Tab A" (tabindex="1") on slide 3, which is not visible.
  • On slide 2, focus moves to "Tab B" (tabindex="2") on slide 3, which is not visible.
  • The slide does not change, and nothing on screen shows focus.

Expected behavior

Focus moves in DOM order to content on the current slide. The tabs have tabindex="0" (or -1 for tabs that are not selected), as they do in HTML output.

Your environment

  • IDE: none (rendered with the CLI, tested in Chrome 154.0.8037.58)
  • OS: macOS 26.6.2 (build 25G83)

Quarto check output

Quarto 1.11.4
[✓] Checking environment information...
      Quarto cache location: /Users/charlottewickham/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.10.0: OK
      Dart Sass version 1.101.0: OK
      Deno version 2.7.14: OK
      Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 1.11.4
      Path: /Applications/quarto/bin
[✓] Checking tools....................OK
      TinyTeX: v2026.04
      Chrome Headless Shell: 150.0.7871.115
      VeraPDF: 1.28.2
[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /Users/charlottewickham/Library/TinyTeX/bin/universal-darwin
      Version: 2026
[✓] Checking Chrome Headless....................OK
      Using: Chrome Headless Shell installed by Quarto
      Path: /Users/charlottewickham/Library/Application Support/quarto/chrome-headless-shell/chrome-headless-shell-mac-arm64/chrome-headless-shell
      Version: 150.0.7871.115
[✓] Checking basic markdown render....OK
[✓] Checking R installation...........OK
      Version: 4.6.0
      Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
      LibPaths:
        - /Users/charlottewickham/Library/R/arm64/4.6/library
        - /Library/Frameworks/R.framework/Versions/4.6/Resources/library
      knitr: 1.51
      rmarkdown: 2.31
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
      Version: 3.12.2
      Path: /Users/charlottewickham/.pyenv/versions/3.12.2/bin/python3
      Jupyter: 5.9.1
      Kernels: python3
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
主要言語
JavaScript
スター
6k
フォーク
461
平均マージ
12時間 42分
マージ済み PR(30日)
54

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

quarto-dev/quarto-cli のほかの issue

quarto-dev/quarto-cli の issue をすべて見る

似ている issue

JavaScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。