You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FullCalendar v6.1 GridCalendar视图ARIA属性无障碍报错求助

FullCalendar v6.1 GridCalendar 无障碍(ADA)问题解决方案

问题1:无href属性的<a>标签携带aria-label触发错误

问题场景

检测到49个此类错误,示例代码:

<a aria-label="October 1, 2023" id="fc-dom-2" class="fc-daygrid-day-number">1</a>

解决方案

  • 临时修复:给<a>标签添加href="#"(如果该元素无需跳转,可配合tabindex="0"和JavaScript处理点击逻辑,避免页面锚点跳转),这样SiteImprove的错误会消失——ARIA规范要求,只有可交互元素(带href的<a>属于可交互元素)才能合法使用aria-label传递语义。
  • 官方修复方向:你提到的相关GitHub PR,通常是将无交互的<a>替换为<button>(而非<span>,因为<span>默认是不可交互元素,直接替换后加aria-label依然不符合规范)。如果PR已合并,升级FullCalendar到修复后的版本即可;未合并的话,可通过自定义渲染替换日期数字元素:
    // 自定义日期单元格渲染示例
    dayCellContent: function(info) {
      return {
        html: `<button aria-label="${info.date.toLocaleDateString('en-US', {year: 'numeric', month: 'long', day: 'numeric'})}" class="fc-daygrid-day-number">${info.dayNumberText}</button>`
      };
    }
    
    用<button>替代既保留交互性(若有点击需求),又能合法使用aria-label,完全符合无障碍规范。

问题2:<div>标签使用aria-labelledby触发错误

问题场景

检测到1个此类错误,示例代码:

<div aria-labelledby="fc-dom-1" class="fc-view-harness fc-view-harness-active" style="height: 687.407px;">...</div>

解决方案

aria-labelledby仅适用于可交互元素或需要被辅助技术识别语义的容器,普通布局<div>默认不需要该属性:

  • 合规性判断:先检查fc-dom-1对应的元素内容:
    1. 如果是日历视图的标题说明(比如“2023年10月日历”),给<div>添加role="region",让它成为可被辅助技术识别的区域容器,此时保留aria-labelledby完全合规,SiteImprove错误会消失。
    2. 如果fc-dom-1无实际语义,或该<div>仅用于布局,直接移除aria-labelledby即可,不会影响无障碍体验,完全符合ADA要求。

关于提交BUG报告的建议

不用纠结测试用例过度精简,FullCalendar官方接受复现逻辑清晰的BUG:

  • 新建仅包含FullCalendar Grid视图的极简HTML页面(用官方CDN资源)。
  • 明确列出SiteImprove检测到的错误类型、数量。
  • 附上错误元素的代码片段和检测截图。
  • 关联你找到的相关GitHub PR,说明问题已被关注,能加速官方处理。

内容的提问来源于stack exchange,提问作者god_is_love

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 18:39:54