Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Default listing renders an empty, focusable thumbnail link for posts without an image

Ouverte Adaptée aux débutants
#15,066 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
72/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
javascript, typescript

Piste de recherche

Commence par le modèle item-default.ejs.md, où la vignette est toujours enveloppée dans une balise a, puis examine emptyDiv() dans website-listing-read.ts, qui remplit le cas vide. Pour reproduire, effectue le rendu d'une liste par défaut avec une publication sans image et vérifie dans la sortie la présence du lien sans nom. C'est terminé lorsqu'une publication sans image n'a plus de lien de vignette focalisable, ou en a un qui est aria-hidden avec tabindex défini à -1, et qu'axe ne signale plus link-name pour elle.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

accessibility bug listings
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 default listing, a post with no preview image gets an empty thumbnail link.

item-default.ejs.md always wraps the thumbnail in <a href="...">.
When the post has no image and the listing sets no image-placeholder, emptyDiv() in website-listing-read.ts fills it with <div class="listing-item-img-placeholder">&nbsp;</div>.
The link has no accessible name, but it is still a Tab stop, so keyboard and screen reader users meet one unnamed link per post before its title link.
axe reports it as link-name (WCAG 2.4.4, 4.1.2).

The grid listing is not affected, as its whole card is one link with text.

This differs from #15038, where the thumbnail has an image without alt text, and from #7028, which asks for alt text on image-placeholder.

Steps to reproduce

_quarto.yml:

project:
  type: website
website:
  title: "Listing"

index.qmd:

---
title: "Posts"
listing:
  contents: posts
  type: default
---

posts/one/index.qmd:

---
title: "Post one"
date: 2026-01-01
---

Text without an image.

Render the website and inspect _site/index.html, or run axe on it.

Actual behavior
<div class="thumbnail"><a href="./posts/one/index.html" class="no-external">

<div class="listing-item-img-placeholder card-img-top" >&nbsp;</div>

</a></div>

axe: link-name on the thumbnail link of each post; the link is reachable with Tab and announced with no name.

Expected behavior

A post with no image gets no thumbnail link, or a link hidden from assistive technology and taken out of the tab order (aria-hidden="true" and tabindex="-1"), since the title link next to it already goes to the same page.

Your environment
  • IDE: none, rendered from the command line.
  • OS: macOS 27.0.
Quarto check output
quarto check
Quarto 99.9.9

[✓] Checking environment information...
      Quarto cache location: /Users/mcanouil/Library/Caches/quarto
      Project: none found (single-file mode)

[✓] 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: 99.9.9
      commit: b86f98d382940bef6c65f37ea0bdfba844f19b6d
      Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/package/dist/bin

[✓] Checking tools....................OK
      TinyTeX: v2026.07
      Chrome Headless Shell: (not installed)
      VeraPDF: (not installed)

[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /Users/mcanouil/Library/TinyTeX/bin/universal-darwin
      Version: 2026

[✓] Checking Chrome Headless....................OK
      Using: Chrome from QUARTO_CHROMIUM
      Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser

[✓] Checking basic markdown render....OK

ℹ R version 4.6.1 (2026-06-24)
! Config '~/.Rprofile' was loaded!

[✓] Checking R installation...........OK
      Version: 4.6.1
      Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
      LibPaths:
        - /Users/mcanouil/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.13.11
      Path: /Users/mcanouil/Projects/q2-tests/.venv/bin/python3
      Jupyter: (None)

      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter

[✓] Checking Julia installation...
Langage dominant
JavaScript
Étoiles
6.1k
Forks
466
Merge moyen
20 h 35 min
PR mergées (30 j)
75

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de quarto-dev/quarto-cli

Toutes les issues de quarto-dev/quarto-cli

Issues similaires

Plus d'issues JavaScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.