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对应的元素内容:- 如果是日历视图的标题说明(比如“2023年10月日历”),给
<div>添加role="region",让它成为可被辅助技术识别的区域容器,此时保留aria-labelledby完全合规,SiteImprove错误会消失。 - 如果
fc-dom-1无实际语义,或该<div>仅用于布局,直接移除aria-labelledby即可,不会影响无障碍体验,完全符合ADA要求。
- 如果是日历视图的标题说明(比如“2023年10月日历”),给
关于提交BUG报告的建议
不用纠结测试用例过度精简,FullCalendar官方接受复现逻辑清晰的BUG:
- 新建仅包含FullCalendar Grid视图的极简HTML页面(用官方CDN资源)。
- 明确列出SiteImprove检测到的错误类型、数量。
- 附上错误元素的代码片段和检测截图。
- 关联你找到的相关GitHub PR,说明问题已被关注,能加速官方处理。
内容的提问来源于stack exchange,提问作者god_is_love
相关产品推荐
相关产品推荐

