无障碍修复报告示例。 Harbor & Pine是我们搭建的一家存在常见无障碍缺陷的虚构商店,并用扫描您网站的同一引擎进行了测试。

免费扫描您的网站

无障碍修复报告示例

harborandpine.example

平台:
Shopify
生成时间:
2026年9月24日
测试页面:
9
引擎:
axe-core 4.13.0

摘要

  • 我们于 2026年9月24日 使用 axe-core 4.13.0 按 WCAG 2.2 A 级和 AA 级测试了 harborandpine.example 的 9 个页面(其中 4 个来自您的站点地图),并进行了纯键盘购物测试。
  • 8 类问题未通过自动化 WCAG 测试(131 个实例)。 其中 8 类标记为“优先修复”。
  • 流程受阻仅使用键盘的购物者在以下步骤受阻:选择选项和数量。
  • 4 个项目需要人工检查:自动化测试标记了它们,但无法判定。
  • 建议先处理:键盘焦点被困在 Cookie 横幅中; 无法用键盘选择产品选项; 按钮必须有可辨识的文本。

自动化测试只能发现网站上的部分无障碍问题,而不是全部。本报告描述我们的测试发现了什么以及如何修复。它不构成法律意见,也不证明符合 ADA、《欧洲无障碍法案》或任何法律。

概览

P1 · 优先修复在关键页面上阻碍访客
8
P2 · 其次修复严重或中等程度的障碍
0
P3 · 建议改进轻微问题和最佳实践
2

按严重程度统计的实例数

关键
73
严重
58
中等
25
轻微
0
已确认的未通过项未通过自动化测试的问题类型
10
需复核已标记,但需要人工判定
4
通过的检查没有未通过项的自动化规则
32
未测试流程步骤和人工检查
7

我们测试了 9 个页面,其中 4 个从您的站点地图中抽取。目标日期是根据严重程度给出的建议;最终日期请与您的开发人员商定。

网站概览

根据所测页面上的公开证据识别。标签可能有误;它只决定运行哪些额外检查。

网站类型

  • 网店高置信度
    • 运行在店铺平台 Shopify 上
    • 指向购物车的链接
    • 产品或商店链接
  • 落地页中等置信度
    • 仅链接了 6 个内部页面

检测到的技术

  • Shopify高置信度

    页面上有 Shopify 的资源或脚本

此网站的检查项

  • 通用检查:无障碍、SEO、速度、安全和邮件
  • 电商模块:产品系列页、产品页和购物车页面,以及一直到结账按钮的键盘购物流程
  • Shopify 说明:模板和后台的修复步骤;由平台管理的响应头和 Cookie 列出仅供参考

键盘购物流程

我们像无法使用鼠标的人那样,只用键盘(Tab、Shift+Tab、Enter、Space、Escape)进行购物。我们在一次性会话中将一件商品加入购物车,并在结账按钮前停止:绝不进入结账流程,也不输入个人信息或支付信息。 目标:仅用键盘从首页到达结账按钮。

  1. 01到达主导航

    通过

    按了 21 次 Tab 键后,焦点到达导航中的“Shop”。

    预期:从首页顶部按 Tab 键,可以到达主导航中的链接。

    • 备注:Cookie 横幅一直占据键盘焦点,直到我们在“Accept all”上按下 Enter 键。
    如何复现

    https://harborandpine.example/

    1. 打开首页。
    2. 点击浏览器的地址栏,然后反复按 Tab 键(Shift+Tab 可返回)。

    我们观察到的焦点顺序

    “Shop”

  2. 02从产品系列中打开产品

    通过

    按了 9 次 Tab 键后,焦点到达“Trail Daypack 22L”,按 Enter 键打开了 /products/trail-daypack。

    预期:按 Tab 键可以到达产品系列网格中的产品,按 Enter 键可以打开其页面。

    如何复现

    https://harborandpine.example/collections/all

    1. 打开 /collections/all。
    2. 反复按 Tab 键,直到网格中的某个产品被突出显示,然后按 Enter 键。

    我们观察到的焦点顺序

    “Harbor & Pine” → “Shop” → “New arrivals” → “Our story” → body > header.site > div.icons > button → “Account” → body > header.site > div.icons > a → “FeaturedPrice, low to highPrice, high to low” → “Trail Daypack 22L”

  3. 03选择选项和数量

    未通过

    3 个产品选项无法获得键盘焦点:“S”、“M”、“L”。它们能响应鼠标,但键盘用户无法选择。

    预期:每个产品选项(尺寸、颜色、款式)和数量字段都能用 Tab 键到达。

    2.1.1 键盘 · 置信度:高

    选择选项和数量:标出轮廓的未通过元素
    选择选项和数量:标出轮廓的未通过元素
    如何复现

    https://harborandpine.example/products/trail-daypack

    1. 打开 /products/trail-daypack。
    2. 从页面顶部开始按 Tab 键,记下在“加入购物车”之前有哪些控件获得了焦点。

    我们观察到的焦点顺序

    “Harbor & Pine” → “Shop” → “New arrivals” → “Our story” → ……还有 5 个…… → body > header.site > div.icons > a → div.page.product > div.gallery > div.thumbs > button → div.page.product > div.gallery > div.thumbs > button → div.page.product > div.gallery > div.thumbs > button → div.page.product > div > div.swatches > button → div.page.product > div > div.swatches > button → div.page.product > div > div.swatches > button → “1” → “Add to cart”

    元素
    <div class="size-option" data-fr="opt-1">S</div>
  4. 04用键盘加入购物车

    需复核

    在“加入购物车”上按 Enter 键有效(页头中的购物车数量发生了变化、出现了“已加入购物车”的消息),但我们没有找到状态消息或获得焦点的对话框,因此屏幕阅读器用户可能听不到商品已加入的提示。

    预期:在“加入购物车”上按 Enter 键可以加入商品,并且确认信息会被播报:状态消息、获得焦点的对话框,或购物车页面。

    4.1.3 状态消息 · 置信度:中

    用键盘加入购物车:此步骤时的页面
    用键盘加入购物车:此步骤时的页面
    如何复现

    https://harborandpine.example/products/trail-daypack

    1. 打开 /products/trail-daypack。
    2. 反复按 Tab 键,直到“加入购物车”获得焦点,然后按 Enter 键。
    3. 用屏幕阅读器(VoiceOver:Cmd+F5)收听是否有确认提示。
  5. 05修改购物车并到达结账

    通过

    按了 12 次 Tab 键,到达全部 4 个购物车控件和结账按钮(“Check out”)。我们没有按下该按钮。

    预期:数量字段、移除按钮和结账按钮都能用 Tab 键到达。

    如何复现

    https://harborandpine.example/cart

    1. 将任意产品加入购物车,然后打开购物车页面。
    2. 按 Tab 键,检查数量字段、移除按钮和结账按钮是否都能获得焦点。

    我们观察到的焦点顺序

    “Harbor & Pine” → “Shop” → “New arrivals” → “Our story” → body > header.site > div.icons > button → “Account” → body > header.site > div.icons > a → “1” → tbody > tr > td > button.remove → “2” → tbody > tr > td > button.remove → “Check out”

  6. 06结账

    未测试

    我们在结账按钮前停止:我们绝不进入结账、创建订单或输入支付信息。在 Shopify 上,结账页面由 Shopify 运行,而不是由您的模板运行。请手动检查结账流程(见“人工检查”)。

律师函指控对照表

律师函中的每项指控与扫描证据逐一比对。这是事实比对,不是法律意见。

  • “Images lack alternative text, so product photos are not described.”

    缺少替代文本的图片. 在所测的 5 个页面中,有 3 个页面出现,共 10 个实例。

    image-alt

    已复现
  • “Text has insufficient color contrast against its background, including sale badges and prices.”

    颜色对比度不足. 在所测的 5 个页面中,有 5 个页面出现,共 16 个实例。

    color-contrast

    已复现
  • “The website cannot be navigated using a keyboard alone.”

    键盘访问和焦点. 键盘焦点被困在 Cookie 横幅中。

    已复现
  • “Form fields do not have labels, including the newsletter sign-up and the quantity fields in the cart.”

    表单字段缺少标签. 在所测的 5 个页面中,有 3 个页面出现,共 4 个实例。

    select-name, label

    已复现
  • “Product videos do not have captions.”

    视频和音频字幕. 自动化扫描无法判定字幕。请检查每个产品视频或品牌视频是否有准确的字幕和文字记录。

    需人工检查
  • “Our client is legally blind and uses screen reader software.”

    其他问题. 这是一种笼统的说法。请用 VoiceOver 或 NVDA 等屏幕阅读器测试关键流程(搜索、产品页、加入购物车、结账)。

    需人工检查

修复计划

按优先级排列的问题,附负责人和目标日期
优先级问题状态WCAG实例数负责人目标日期
P1键盘焦点被困在 Cookie 横幅中已确认2.1.21应用供应商2026-10-08
P1无法用键盘选择产品选项已确认2.1.11主题开发人员2026-10-08
P1按钮必须有可辨识的文本已确认4.1.241主题开发人员2026-10-08
P1图像必须有替代文本已确认1.1.122内容编辑2026-10-08
P1表单元素必须有标签已确认4.1.27主题开发人员2026-10-08
P1select 元素必须有一个可访问的名称已确认4.1.21主题开发人员2026-10-08
P1链接必须有可辨识的文本已确认2.4.4, 4.1.236主题开发人员2026-10-08
P1元素必须满足最小颜色对比度比率阈值已确认1.4.322店主(后台设置)2026-10-08
P3所有页面内容应包含在 landmark 中已确认最佳实践18主题开发人员2026-11-23
P3标题级别只应递增一已确认最佳实践7主题开发人员2026-11-23

如何修复每个问题

P1关键已确认的未通过项WCAG 2.1.2

键盘焦点被困在 Cookie 横幅中

工作量:中等 · 负责人:应用供应商 · 2.1.2 无键盘陷阱

键盘用户按 Tab 键时,焦点在几个元素之间循环,始终无法到达页面的其余部分。

如果焦点被困住,仅使用键盘的用户和屏幕阅读器用户将完全无法购物(WCAG 2.1.2 无键盘陷阱)。

证据

发现方式
键盘测试(在首页上逐个按 Tab 键)
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
1 个页面上共 1 个实例

预期: 按 Tab 键能够依次经过页面上的每个交互元素,并继续移到页面的其余部分。

实际: 按了 40 次 Tab 键后,焦点一直在以下元素之间循环:Settings、Accept all。

如何复现
  1. 打开首页。
  2. 点击地址栏,然后反复按 Tab 键。
  3. 焦点不断回到同样几个元素上。
未通过的元素(显示 6 个)
button#cc-settings
Settings
button#cc-accept.primary
Accept all
button#cc-settings
Settings
button#cc-accept.primary
Accept all
button#cc-settings
Settings
button#cc-accept.primary
Accept all
受影响的页面(1)
  • https://harborandpine.example/

如何修复

通用指导
  1. 在您的 Cookie 或同意横幅应用的设置中查找无障碍或焦点陷阱相关选项,或请供应商修复。
  2. 模态框只能在打开期间将焦点保持在其内部,并且必须能用 Escape 键关闭,然后将焦点返回到原来的位置。
用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:键盘焦点被困在 Cookie 横幅中(WCAG 2.1.2)。
位置:1 个页面上共 1 个实例,例如 /。

一个未通过的元素(浏览器渲染后的代码):
```html
Settings
```

为什么重要:如果焦点被困住,仅使用键盘的用户和屏幕阅读器用户将完全无法购物(WCAG 2.1.2 无键盘陷阱)。

需要修改的内容:
- 在您的 Cookie 或同意横幅应用的设置中查找无障碍或焦点陷阱相关选项,或请供应商修复。
- 模态框只能在打开期间将焦点保持在其内部,并且必须能用 Escape 键关闭,然后将焦点返回到原来的位置。

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 加载首页,反复按 Tab 键,确认焦点能够到达主导航和主要内容。

由自动化键盘探测发现;请人工确认。

P1关键已确认的未通过项WCAG 2.1.1

无法用键盘选择产品选项

工作量:中等 · 负责人:主题开发人员 · 2.1.1 键盘

尺码、颜色或变体选项响应鼠标,但无法获得键盘焦点,键盘用户无法选择变体。

仅使用键盘的购物者(包括许多屏幕阅读器用户)无法通过此步骤(WCAG 2.1.1)。

证据

发现方式
键盘流程
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
1 个页面上共 1 个实例

预期: 每个产品选项(尺寸、颜色、款式)和数量字段都能用 Tab 键到达。

实际: 3 个产品选项无法获得键盘焦点:“S”、“M”、“L”。它们能响应鼠标,但键盘用户无法选择。

无法用键盘选择产品选项:标出轮廓的元素
无法用键盘选择产品选项:标出轮廓的元素
如何复现
  1. 打开 /products/trail-daypack。
  2. 从页面顶部开始按 Tab 键,记下在“加入购物车”之前有哪些控件获得了焦点。
未通过的元素(显示 1 个)
(见截图)
<div class="size-option" data-fr="opt-1">S</div>
受影响的页面(1)
  • https://harborandpine.example/products/trail-daypack

如何修复

通用指导
  1. 用带可见标签的原生单选按钮(或 <select>)构建选项选择器;将标签设置为色块样式。
  2. 如果保留自定义元素,每个选项都需要 tabindex="0"、位于 role="radiogroup" 内且带 aria-checked 的 role="radio",以及方向键和空格键处理。原生单选按钮会自动提供这些功能。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 您主题中产品表单的变体选择器
<div class="size-option" data-fr="opt-1">S</div>
修改后 · 需调整的示例
<fieldset class="variant-picker">
  <legend>Size</legend>
  <input type="radio" id="size-s" name="Size" value="S" class="visually-hidden">
  <label for="size-s" class="size-option">S</label>
  <input type="radio" id="size-m" name="Size" value="M" class="visually-hidden">
  <label for="size-m" class="size-option">M</label>
</fieldset>

每个选项都是真正的单选按钮,可用 Tab 键到达,用方向键切换;标签保留您的色块样式。请使用您自己的选项名称和值。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:无法用键盘选择产品选项(WCAG 2.1.1)。
位置:1 个页面上共 1 个实例,例如 /products/trail-daypack。

一个未通过的元素(浏览器渲染后的代码):
```html
<div class="size-option" data-fr="opt-1">S</div>
```

为什么重要:仅使用键盘的购物者(包括许多屏幕阅读器用户)无法通过此步骤(WCAG 2.1.1)。

需要修改的内容:
- 用带可见标签的原生单选按钮(或 <select>)构建选项选择器;将标签设置为色块样式。
- 如果保留自定义元素,每个选项都需要 tabindex="0"、位于 role="radiogroup" 内且带 aria-checked 的 role="radio",以及方向键和空格键处理。原生单选按钮会自动提供这些功能。

建议的修改(您主题中产品表单的变体选择器):
```html
<fieldset class="variant-picker">
  <legend>Size</legend>
  <input type="radio" id="size-s" name="Size" value="S" class="visually-hidden">
  <label for="size-s" class="size-option">S</label>
  <input type="radio" id="size-m" name="Size" value="M" class="visually-hidden">
  <label for="size-m" class="size-option">M</label>
</fieldset>
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 只用键盘重复复现步骤。
  • 从本报告申请复测:流程测试会再次运行。
P1关键已确认的未通过项WCAG 4.1.2

按钮必须有可辨识的文本

工作量:小 · 负责人:主题开发人员 · 4.1.2 名称、角色、值

部分按钮没有无障碍名称,屏幕阅读器用户只能听到“按钮”。

WCAG 4.1.2 要求每个控件都有名称。缺少名称的按钮通常包括数量增减按钮、关闭按钮和轮播箭头。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
9 个页面上共 41 个实例

预期: 按钮必须有可辨识的文本

实际: 元素没有对屏幕阅读器可见的内部文本。aria-label 属性不存在或为空。aria-labelledby 属性不存在,引用不存在的元素或引用空元素。元素没有 title 属性。表单元素没有隐式标签文本 <label>。表单元素没有显式的标签文本 <label>。元素的默认语义没有被 role="none" 或 role="presentation" 覆盖。

按钮必须有可辨识的文本:/ 上标出轮廓的元素
按钮必须有可辨识的文本:/ 上标出轮廓的元素
按钮必须有可辨识的文本:/collections/all 上标出轮廓的元素
按钮必须有可辨识的文本:/collections/all 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:.icons > button[type="button"]
  3. 在开发者工具的 Accessibility 窗格中,该元素计算得出的 Name 为空。
  4. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“button-name”。
未通过的元素(显示 4 个)
.icons > button[type="button"]
<button type="button"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"></circle><path d="M20 20l-3.5-3.5"></path></svg></button>
.thumbs > button:nth-child(1)
<button type="button"><img src="/img/daypack.svg"></button>
.thumbs > button:nth-child(2)
<button type="button"><img src="/img/jacket.svg"></button>
.thumbs > button:nth-child(3)
<button type="button"><img src="/img/bottle.svg"></button>
受影响的页面(9)
  • https://harborandpine.example/
  • https://harborandpine.example/collections/all
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/cart
  • https://harborandpine.example/pages/about
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

根据您页面的标记生成的代码
  1. 在下面的示例中找到这些按钮。
  2. 添加可见文字、视觉上隐藏的文字,或说明按钮作用的 aria-label(例如 aria-label="Close" 或 aria-label="Increase quantity")。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<button type="button">…</button>
修改后 · 根据未通过的元素生成
<button type="button" aria-label="[What this button does]">…</button>

将方括号中的文字替换为按钮的作用。在按钮内使用可见文字或视觉上隐藏的文字也可以。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<button type="button"><img src="/img/daypack.svg"></button>
修改后 · 根据未通过的元素生成
<button type="button" aria-label="[Describe the image, e.g. Back view]"><img src="/img/daypack.svg"></button>

将方括号中的文字替换为按钮的作用。在按钮内使用可见文字或视觉上隐藏的文字也可以。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<button type="button"><img src="/img/jacket.svg"></button>
修改后 · 根据未通过的元素生成
<button type="button" aria-label="[Describe the image, e.g. Back view]"><img src="/img/jacket.svg"></button>

将方括号中的文字替换为按钮的作用。在按钮内使用可见文字或视觉上隐藏的文字也可以。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<button type="button"><img src="/img/bottle.svg"></button>
修改后 · 根据未通过的元素生成
<button type="button" aria-label="[Describe the image, e.g. Back view]"><img src="/img/bottle.svg"></button>

将方括号中的文字替换为按钮的作用。在按钮内使用可见文字或视觉上隐藏的文字也可以。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:按钮必须有可辨识的文本(WCAG 4.1.2)。
位置:9 个页面上共 41 个实例,例如 /、/collections/all、/products/trail-daypack、/cart。

一个未通过的元素(浏览器渲染后的代码):
```html
<button type="button"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"></circle><path d="M20 20l-3.5-3.5"></path></svg></button>
```

为什么重要:WCAG 4.1.2 要求每个控件都有名称。缺少名称的按钮通常包括数量增减按钮、关闭按钮和轮播箭头。

需要修改的内容:
- 在下面的示例中找到这些按钮。
- 添加可见文字、视觉上隐藏的文字,或说明按钮作用的 aria-label(例如 aria-label="Close" 或 aria-label="Increase quantity")。

建议的修改(您的主题代码,可在其中搜索所示的标记):
```html
<button type="button" aria-label="[What this button does]">…</button>
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描受影响的页面。
  • 用屏幕阅读器检查这些按钮。

详细指南:https://dequeuniversity.com/rules/axe/4.13/button-name?application=playwright

P1关键已确认的未通过项WCAG 1.1.1

图像必须有替代文本

工作量:中等 · 负责人:内容编辑 · 1.1.1 非文本内容

图片缺少文本替代内容,屏幕阅读器用户无法得知图片显示的内容。

WCAG 1.1.1 要求有意义的图片提供文本替代内容。没有它,屏幕阅读器用户无法分辨照片展示的是哪件产品。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
7 个页面上共 22 个实例

预期: 图像必须有替代文本

实际: 元素没有 alt 属性。aria-label 属性不存在或为空。aria-labelledby 属性不存在,引用不存在的元素或引用空元素。元素没有 title 属性。元素的默认语义没有被 role="none" 或 role="presentation" 覆盖。

图像必须有替代文本:/ 上标出轮廓的元素
图像必须有替代文本:/ 上标出轮廓的元素
图像必须有替代文本:/collections/all 上标出轮廓的元素
图像必须有替代文本:/collections/all 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:img[src$="hero-photo.jpg"]
  3. 在开发者工具的 Accessibility 窗格中,该元素计算得出的 Name 为空。
  4. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“image-alt”。
未通过的元素(显示 4 个)
img[src$="hero-photo.jpg"]
<img src="/img/hero-photo.jpg" loading="lazy">
img[src$="mug.svg"]
<img src="/img/mug.svg">
img[src$="beanie.svg"]
<img src="/img/beanie.svg">
img[src$="jacket.svg"]
<img src="/img/jacket.svg">
受影响的页面(7)
  • https://harborandpine.example/
  • https://harborandpine.example/collections/all
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

根据您页面的标记生成的代码
  1. 在 Shopify 后台打开“产品 > [产品] > 媒体文件”,点击每张图片并填写“替代文本”。对于分区中的图片,请打开“在线商店 > 模板 > 自定义”,在分区设置中设置图片的替代文本。
  2. 描述对购物者重要的信息:产品名称、颜色和展示角度(例如“橄榄绿帆布托特包,正面”)。
  3. 装饰性图片应使用空的 alt 属性(alt=""),让屏幕阅读器跳过它们。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 产品照片:Shopify 后台 › 产品 › 媒体文件 › 替代文本。其他图片:您的模板代码
<img src="/img/hero-photo.jpg" loading="lazy">
修改后 · 根据未通过的元素生成
<img src="/img/hero-photo.jpg" loading="lazy" alt="[Describe the image for a shopper]">

描述图片显示的内容(产品照片:产品、颜色、角度)。如果图片纯属装饰,请改用 alt="",让屏幕阅读器跳过它。

修改前 · 我们的发现 · 产品照片:Shopify 后台 › 产品 › 媒体文件 › 替代文本。其他图片:您的模板代码
<img src="/img/mug.svg">
修改后 · 根据未通过的元素生成
<img src="/img/mug.svg" alt="[Describe the image for a shopper]">

描述图片显示的内容(产品照片:产品、颜色、角度)。如果图片纯属装饰,请改用 alt="",让屏幕阅读器跳过它。

修改前 · 我们的发现 · 产品照片:Shopify 后台 › 产品 › 媒体文件 › 替代文本。其他图片:您的模板代码
<img src="/img/beanie.svg">
修改后 · 根据未通过的元素生成
<img src="/img/beanie.svg" alt="[Describe the image for a shopper]">

描述图片显示的内容(产品照片:产品、颜色、角度)。如果图片纯属装饰,请改用 alt="",让屏幕阅读器跳过它。

修改前 · 我们的发现 · 产品照片:Shopify 后台 › 产品 › 媒体文件 › 替代文本。其他图片:您的模板代码
<img src="/img/jacket.svg">
修改后 · 根据未通过的元素生成
<img src="/img/jacket.svg" alt="[Describe the image for a shopper]">

描述图片显示的内容(产品照片:产品、颜色、角度)。如果图片纯属装饰,请改用 alt="",让屏幕阅读器跳过它。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:图像必须有替代文本(WCAG 1.1.1)。
位置:7 个页面上共 22 个实例,例如 /、/collections/all、/products/trail-daypack、/products/pine-wool-beanie。

一个未通过的元素(浏览器渲染后的代码):
```html
<img src="/img/hero-photo.jpg" loading="lazy">
```

为什么重要:WCAG 1.1.1 要求有意义的图片提供文本替代内容。没有它,屏幕阅读器用户无法分辨照片展示的是哪件产品。

需要修改的内容:
- 在 Shopify 后台打开“产品 > [产品] > 媒体文件”,点击每张图片并填写“替代文本”。对于分区中的图片,请打开“在线商店 > 模板 > 自定义”,在分区设置中设置图片的替代文本。
- 描述对购物者重要的信息:产品名称、颜色和展示角度(例如“橄榄绿帆布托特包,正面”)。
- 装饰性图片应使用空的 alt 属性(alt=""),让屏幕阅读器跳过它们。

建议的修改(产品照片:Shopify 后台 › 产品 › 媒体文件 › 替代文本。其他图片:您的模板代码):
```html
<img src="/img/hero-photo.jpg" loading="lazy" alt="[Describe the image for a shopper]">
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描受影响的页面。
  • 使用屏幕阅读器(Mac 上的 VoiceOver:Cmd+F5)收听产品图片的朗读内容。

详细指南:https://dequeuniversity.com/rules/axe/4.13/image-alt?application=playwright

P1关键已确认的未通过项WCAG 4.1.2

表单元素必须有标签

工作量:小 · 负责人:主题开发人员 · 4.1.2 名称、角色、值

部分表单字段没有标签,屏幕阅读器用户不知道应该输入什么。

WCAG 1.3.1、3.3.2 和 4.1.2 要求表单字段具有标签。新闻通讯订阅和搜索字段是常见的问题来源。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
6 个页面上共 7 个实例

预期: 表单元素必须有标签

实际: 表单元素没有隐式标签文本 <label>。表单元素没有显式的标签文本 <label>。aria-label 属性不存在或为空。aria-labelledby 属性不存在,引用不存在的元素或引用空元素。元素没有 title 属性。元素没有 placeholder 属性。元素的默认语义没有被 role="none" 或 role="presentation" 覆盖。

表单元素必须有标签:/products/trail-daypack 上标出轮廓的元素
表单元素必须有标签:/products/trail-daypack 上标出轮廓的元素
表单元素必须有标签:/cart 上标出轮廓的元素
表单元素必须有标签:/cart 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/products/trail-daypack。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:input
  3. 在开发者工具的 Accessibility 窗格中,该元素计算得出的 Name 为空。
  4. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“label”。
未通过的元素(显示 2 个)
input
<input type="number" value="1" min="1">
input[value="2"]
<input type="number" value="2" min="1">
受影响的页面(6)
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/cart
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

根据您页面的标记生成的代码
  1. 为每个字段添加 <label for="field-id"> 元素,至少也要添加 aria-label。
  2. 仅有占位符文字不能算作标签。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<input type="number" value="1" min="1">
修改后 · 根据未通过的元素生成
<input type="number" value="1" min="1" aria-label="Quantity">

该字段没有 id,因此最快的修复方法是使用 aria-label。可见的 <label> 对所有人都更好。标签文字“Quantity”是根据字段推测的;如有需要请调整。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<input type="number" value="2" min="1">
修改后 · 根据未通过的元素生成
<input type="number" value="2" min="1" aria-label="Quantity">

该字段没有 id,因此最快的修复方法是使用 aria-label。可见的 <label> 对所有人都更好。标签文字“Quantity”是根据字段推测的;如有需要请调整。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:表单元素必须有标签(WCAG 4.1.2)。
位置:6 个页面上共 7 个实例,例如 /products/trail-daypack、/cart、/products/pine-wool-beanie、/products/enamel-camp-mug。

一个未通过的元素(浏览器渲染后的代码):
```html
<input type="number" value="1" min="1">
```

为什么重要:WCAG 1.3.1、3.3.2 和 4.1.2 要求表单字段具有标签。新闻通讯订阅和搜索字段是常见的问题来源。

需要修改的内容:
- 为每个字段添加 <label for="field-id"> 元素,至少也要添加 aria-label。
- 仅有占位符文字不能算作标签。

建议的修改(您的主题代码,可在其中搜索所示的标记):
```html
<input type="number" value="1" min="1" aria-label="Quantity">
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描,确认 label 规则不再未通过。
  • 点击每个标签,检查它是否会让对应字段获得焦点。

详细指南:https://dequeuniversity.com/rules/axe/4.13/label?application=playwright

P1关键已确认的未通过项WCAG 4.1.2

select 元素必须有一个可访问的名称

工作量:小 · 负责人:主题开发人员 · 4.1.2 名称、角色、值

一个下拉菜单(通常是排序或变体选择器)没有标签。

WCAG 4.1.2 要求选择菜单具有无障碍名称。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
1 个页面上共 1 个实例

预期: select 元素必须有一个可访问的名称

实际: 表单元素没有隐式标签文本 <label>。表单元素没有显式的标签文本 <label>。aria-label 属性不存在或为空。aria-labelledby 属性不存在,引用不存在的元素或引用空元素。元素没有 title 属性。元素的默认语义没有被 role="none" 或 role="presentation" 覆盖。

select 元素必须有一个可访问的名称:/collections/all 上标出轮廓的元素
select 元素必须有一个可访问的名称:/collections/all 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/collections/all。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:select
  3. 在开发者工具的 Accessibility 窗格中,该元素计算得出的 Name 为空。
  4. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“select-name”。
未通过的元素(显示 1 个)
select
<select><option>Featured</option><option>Price, low to high</option><option>Price, high to low</option></select>
受影响的页面(1)
  • https://harborandpine.example/collections/all

如何修复

根据您页面的标记生成的代码
  1. 添加与该选择菜单关联的 <label>,或添加 aria-label,例如 aria-label="Sort by"。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<select><option>Featured</option><option>Price, low to high</option><option>Price, high to low</option></select>
修改后 · 根据未通过的元素生成
<select aria-label="[Field label]"><option>Featured</option><option>Price, low to high</option><option>Price, high to low</option></select>

该字段没有 id,因此最快的修复方法是使用 aria-label。可见的 <label> 对所有人都更好。将方括号中的文字替换为字段的标签。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:select 元素必须有一个可访问的名称(WCAG 4.1.2)。
位置:1 个页面上共 1 个实例,例如 /collections/all。

一个未通过的元素(浏览器渲染后的代码):
```html
<select><option>Featured</option><option>Price, low to high</option><option>Price, high to low</option></select>
```

为什么重要:WCAG 4.1.2 要求选择菜单具有无障碍名称。

需要修改的内容:
- 添加与该选择菜单关联的 <label>,或添加 aria-label,例如 aria-label="Sort by"。

建议的修改(您的主题代码,可在其中搜索所示的标记):
```html
<select aria-label="[Field label]"><option>Featured</option><option>Price, low to high</option><option>Price, high to low</option></select>
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描产品系列页和产品页。

详细指南:https://dequeuniversity.com/rules/axe/4.13/select-name?application=playwright

P1严重已确认的未通过项WCAG 1.4.3

元素必须满足最小颜色对比度比率阈值

工作量:小 · 负责人:店主(后台设置) · 1.4.3 对比度(最低)

部分文字与背景的区分度不够,低视力用户难以阅读。

WCAG 1.4.3 要求普通文字的对比度至少达到 4.5:1,大号文字至少达到 3:1。颜色浅淡的价格、徽标和横幅,对低视力用户以及在强光下的所有人来说都难以阅读。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
9 个页面上共 22 个实例

预期: 元素必须满足最小颜色对比度比率阈值

实际: 元素的颜色对比度 3.09 不足(前景色:#ffffff,背景色:#e76f51,字体大小:9.8pt (13px),字体粗细:normal)。预期的对比度为 4.5:1。

元素必须满足最小颜色对比度比率阈值:/ 上标出轮廓的元素
元素必须满足最小颜色对比度比率阈值:/ 上标出轮廓的元素
元素必须满足最小颜色对比度比率阈值:/collections/all 上标出轮廓的元素
元素必须满足最小颜色对比度比率阈值:/collections/all 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:.announce
  3. 在 Styles 窗格中点击元素颜色旁的色块,查看测得的对比度。
  4. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“color-contrast”。
未通过的元素(显示 4 个)
.announce
<div class="announce">Free shipping on orders over $75 · Easy 30-day returns</div>
article:nth-child(3) > .badge
<span class="badge">Sale</span>
article:nth-child(3) > .price > .compare
<span class="compare">$72</span>
article:nth-child(4) > .price > .compare
<span class="compare">$40</span>
受影响的页面(9)
  • https://harborandpine.example/
  • https://harborandpine.example/collections/all
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/cart
  • https://harborandpine.example/pages/about
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

根据您页面的标记生成的代码
  1. 打开下面列出的未通过元素,记下未通过摘要中的前景色和背景色。
  2. 在“在线商店 > 模板 > 自定义 > 模板设置 > 颜色”中,为受影响的配色方案加深文字颜色或调浅背景颜色,直到对比度至少达到 4.5:1。
  3. 请特别注意促销徽标、占位符文字、页脚链接和图片上的按钮。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 模板设置 › 颜色,或您主题的 CSS 文件
<div class="announce">Free shipping on orders over $75 · Easy 30-day returns</div>
修改后 · 根据未通过的元素生成
.announce {
  background-color: #b95941; /* was #e76f51: 3.09:1, now 4.59:1 */
}

13px 文字的实测对比度为 3.09:1;WCAG 1.4.3 要求 4.5:1。#b95941 保持相同色调且能够通过。此选择器是我们测试时使用的;您的主题可能对同一样式使用更通用的 class。

修改前 · 我们的发现 · 模板设置 › 颜色,或您主题的 CSS 文件
<span class="badge">Sale</span>
修改后 · 根据未通过的元素生成
.badge {
  background-color: #9f693f; /* was #f4a261: 2.06:1, now 4.59:1 */
}

12px 粗体文字的实测对比度为 2.06:1;WCAG 1.4.3 要求 4.5:1。#9f693f 保持相同色调且能够通过。此选择器是我们测试时使用的;您的主题可能对同一样式使用更通用的 class。

修改前 · 我们的发现 · 模板设置 › 颜色,或您主题的 CSS 文件
<span class="compare">$72</span>
修改后 · 根据未通过的元素生成
.compare {
  color: #78736c; /* was #b0a99f: 2.29:1, now 4.62:1 */
}

14px 文字的实测对比度为 2.29:1;WCAG 1.4.3 要求 4.5:1。#78736c 保持相同色调且能够通过。此选择器是我们测试时使用的;您的主题可能对同一样式使用更通用的 class。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:元素必须满足最小颜色对比度比率阈值(WCAG 1.4.3)。
位置:9 个页面上共 22 个实例,例如 /、/collections/all、/products/trail-daypack、/cart。

一个未通过的元素(浏览器渲染后的代码):
```html
<div class="announce">Free shipping on orders over $75 · Easy 30-day returns</div>
```

为什么重要:WCAG 1.4.3 要求普通文字的对比度至少达到 4.5:1,大号文字至少达到 3:1。颜色浅淡的价格、徽标和横幅,对低视力用户以及在强光下的所有人来说都难以阅读。

需要修改的内容:
- 打开下面列出的未通过元素,记下未通过摘要中的前景色和背景色。
- 在“在线商店 > 模板 > 自定义 > 模板设置 > 颜色”中,为受影响的配色方案加深文字颜色或调浅背景颜色,直到对比度至少达到 4.5:1。
- 请特别注意促销徽标、占位符文字、页脚链接和图片上的按钮。

建议的修改(模板设置 › 颜色,或您主题的 CSS 文件):
```css
.announce {
  background-color: #b95941; /* was #e76f51: 3.09:1, now 4.59:1 */
}
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新运行扫描,确认 color-contrast 不再出现。
  • 使用对比度检查工具,对具体颜色进行抽查。

详细指南:https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright

P3中等已确认的未通过项

所有页面内容应包含在 landmark 中

工作量:中等 · 负责人:主题开发人员

部分内容不在页面地标区域(header、nav、main 或 footer)内。

地标区域让屏幕阅读器用户可以在页面中快速跳转。这是支持 WCAG 1.3.1 和 2.4.1 的最佳实践。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
9 个页面上共 18 个实例

预期: 所有页面内容应包含在 landmark 中

实际: 某些页面内容不包含在 landmark 中。

所有页面内容应包含在 landmark 中:/ 上标出轮廓的元素
所有页面内容应包含在 landmark 中:/ 上标出轮廓的元素
所有页面内容应包含在 landmark 中:/cart 上标出轮廓的元素
所有页面内容应包含在 landmark 中:/cart 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:.announce
  3. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“region”。
未通过的元素(显示 2 个)
.announce
<div class="announce">Free shipping on orders over $75 · Easy 30-day returns</div>
#cookie-banner > p
<p>We use cookies to improve your experience and measure traffic.</p>
受影响的页面(9)
  • https://harborandpine.example/
  • https://harborandpine.example/collections/all
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/cart
  • https://harborandpine.example/pages/about
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

通用指导
  1. 将游离的内容(公告栏、弹窗、聊天小组件)包裹在合适的地标区域中,或放入 <main> 内。
用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:所有页面内容应包含在 landmark 中。
位置:9 个页面上共 18 个实例,例如 /、/collections/all、/products/trail-daypack、/cart。

一个未通过的元素(浏览器渲染后的代码):
```html
<div class="announce">Free shipping on orders over $75 · Easy 30-day returns</div>
```

为什么重要:地标区域让屏幕阅读器用户可以在页面中快速跳转。这是支持 WCAG 1.3.1 和 2.4.1 的最佳实践。

需要修改的内容:
- 将游离的内容(公告栏、弹窗、聊天小组件)包裹在合适的地标区域中,或放入 <main> 内。

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描受影响的页面。

详细指南:https://dequeuniversity.com/rules/axe/4.13/region?application=playwright

P3中等已确认的未通过项

标题级别只应递增一

工作量:中等 · 负责人:主题开发人员

标题层级出现跳级(例如从 H2 直接跳到 H4),让屏幕阅读器用户难以理解页面结构。

屏幕阅读器用户会借助标题浏览页面。这是支持 WCAG 1.3.1 的最佳实践。

证据

发现方式
axe-core 自动化规则
状态 · 置信度
已确认的未通过项 · 高
检测时间
2026年9月24日(UTC)
位置
7 个页面上共 7 个实例

预期: 标题级别只应递增一

实际: 标题顺序无效。

标题级别只应递增一:/collections/all 上标出轮廓的元素
标题级别只应递增一:/collections/all 上标出轮廓的元素
标题级别只应递增一:/products/trail-daypack 上标出轮廓的元素
标题级别只应递增一:/products/trail-daypack 上标出轮廓的元素
如何复现
  1. 在 Chrome 或 Edge 中打开 https://harborandpine.example/collections/all。
  2. 打开开发者工具(F12)› Elements,按 Ctrl+F(Mac 上为 Cmd+F)并搜索:article:nth-child(1) > a[href$="trail-daypack"] > h3
  3. 或者在页面上运行免费的 axe DevTools 浏览器扩展:它会将此问题报告为“heading-order”。
未通过的元素(显示 3 个)
article:nth-child(1) > a[href$="trail-daypack"] > h3
<h3>Trail Daypack 22L</h3>
h3
<h3>Reviews</h3>
h3:nth-child(3)
<h3>Started on the trail</h3>
受影响的页面(7)
  • https://harborandpine.example/collections/all
  • https://harborandpine.example/products/trail-daypack
  • https://harborandpine.example/pages/about
  • https://harborandpine.example/products/pine-wool-beanie
  • https://harborandpine.example/products/enamel-camp-mug
  • https://harborandpine.example/products/harbor-lantern
  • https://harborandpine.example/products/insulated-bottle

如何修复

通用指导
  1. 调整受影响区块中的标题层级,使其按顺序排列、不跳级。
  2. 只修改标签,不修改视觉样式(用 CSS 类控制字号)。

代码

供开发人员参考的实现示例。我们没有您主题的源代码,因此文件位置只是提示,并非确切路径。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<h3>Trail Daypack 22L</h3>
修改后 · 需调整的示例
<h2 class="h3">Trail Daypack 22L</h2>

使用紧接页面上前一个标题的层级(通常是上调一级),并用 class 保持外观。修改前请先检查页面大纲。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<h3>Reviews</h3>
修改后 · 需调整的示例
<h2 class="h3">Reviews</h2>

使用紧接页面上前一个标题的层级(通常是上调一级),并用 class 保持外观。修改前请先检查页面大纲。

修改前 · 我们的发现 · 您的主题代码,可在其中搜索所示的标记
<h3>Started on the trail</h3>
修改后 · 需调整的示例
<h2 class="h3">Started on the trail</h2>

使用紧接页面上前一个标题的层级(通常是上调一级),并用 class 保持外观。修改前请先检查页面大纲。

用 AI 修复显示提示词

将它与您的主题文件一起粘贴到 ChatGPT、Claude、Cursor 或 Copilot 中。发布前请检查修改内容。

我在 harborandpine.example 上运营一家 Shopify 店铺(Online Store 2.0 模板,Liquid 模板文件)。一项无障碍测试发现了这个问题,我想在我的主题中修复它。

问题:标题级别只应递增一。
位置:7 个页面上共 7 个实例,例如 /collections/all、/products/trail-daypack、/pages/about、/products/pine-wool-beanie。

一个未通过的元素(浏览器渲染后的代码):
```html
<h3>Trail Daypack 22L</h3>
```

为什么重要:屏幕阅读器用户会借助标题浏览页面。这是支持 WCAG 1.3.1 的最佳实践。

需要修改的内容:
- 调整受影响区块中的标题层级,使其按顺序排列、不跳级。
- 只修改标签,不修改视觉样式(用 CSS 类控制字号)。

建议的修改(您的主题代码,可在其中搜索所示的标记):
```html
<h2 class="h3">Trail Daypack 22L</h2>
```

回答要求:
- 以修改前和修改后的形式给出确切的改动,并说明应改在哪个文件或设置中。如果需要先看我的文件,请让我粘贴给你。
- 保持视觉设计和所有现有功能不变。
- 不要编造产品名称、价格或文字;请使用我可以自行填写的占位符。
- 最后说明我可以如何自行检查修复效果。
- 请说明如何用键盘和屏幕阅读器确认修复效果。

检查您的修复

  • 重新扫描,并用 HeadingsMap 等浏览器扩展检查标题大纲。

详细指南:https://dequeuniversity.com/rules/axe/4.13/heading-order?application=playwright

需人工复核

自动化测试标记了这些项目但无法判定,例如图片上的文字,或可能无法在手机屏幕上完整显示的内容。它们不计为未通过项。请让您的开发人员逐一检查。

  • 需复核WCAG 4.1.3

    键盘流程:用键盘加入购物车

    在“加入购物车”上按 Enter 键有效(页头中的购物车数量发生了变化、出现了“已加入购物车”的消息),但我们没有找到状态消息或获得焦点的对话框,因此屏幕阅读器用户可能听不到商品已加入的提示。

    1 个页面上共 1 个实例 · 如何检查

  • 需复核WCAG 1.4.10

    产品页在窄屏上可能需要横向滚动才能完整显示

    在 320 CSS 像素宽度下(相当于 400% 缩放),页面比屏幕宽 200px。数据表格和地图可以滚动;文字和控件则不应如此。

    1 个页面上共 2 个实例 · 如何检查

    需检查的元素(显示 2 个)
    div.icons
    <div class="icons"> <button type="button"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"></circle><path d="M20 20l-3.5-3.5"></path></svg></bu
    div
    <div> <p style="color:#6a6a60;font-size:14px">Harbor &amp; Pine</p> <h1>Trail Daypack 22L</h1> <p class="price" style="font-size:22px">$128<span class="compare">$150</span></p> <p class="opt-label">Si
  • 需复核WCAG 1.4.10

    首页在窄屏上可能需要横向滚动才能完整显示

    在 320 CSS 像素宽度下(相当于 400% 缩放),页面比屏幕宽 55px。数据表格和地图可以滚动;文字和控件则不应如此。

    1 个页面上共 3 个实例 · 如何检查

    需检查的元素(显示 3 个)
    div.icons
    <div class="icons"> <button type="button"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"></circle><path d="M20 20l-3.5-3.5"></path></svg></bu
    article.card
    <article class="card"><span class="badge">Sale</span><a href="/products/trail-daypack"><img src="/img/beanie.svg"><h3>Pine Wool Beanie</h3></a><p class="price">$32<span class="compare">$40</span></p><
    button.btn.light
    <button class="btn light" type="submit">Subscribe</button>
  • 需复核WCAG 1.4.3

    元素必须满足最小颜色对比度比率阈值

    由于元素包含图像节点,因此无法确定元素的背景颜色。

    1 个页面上共 1 个实例 · 如何检查

    需检查的元素(显示 1 个)
    h1
    <h1>Gear for the long way home</h1>

复测您的修复

开发人员修改完成后,请运行复测。我们会在相同页面上再次运行相同的自动化检查、键盘测试和键盘流程,并显示哪些问题已不再复现。包含 5 次复测。

复测适用于付费报告。

人工检查

自动化工具无法判定这些项目。请在认为工作完成之前逐项完成。

  • 只用键盘完成结账:我们的自动化流程在结账按钮前停止,从不进入结账页面。
  • 用屏幕阅读器重复操作(Mac 上的 VoiceOver:Cmd+F5;Windows 上的 NVDA),确认价格、变体和错误信息都会被朗读。
  • 将浏览器缩放到 200%,确认没有内容重叠或消失。
  • 检查产品视频和品牌视频是否有准确的字幕。
  • 故意填错并提交表单(新闻通讯、联系、结账),确认错误以文字形式说明。
  • 检查轮播和弹窗能否暂停或关闭,包括使用 Escape 键。

无障碍声明草稿

请修改方括号中的内容,然后将其发布在页脚有链接指向的页面上。

harborandpine.example 无障碍声明

我们希望每个人都能在 harborandpine.example 上购物,包括使用屏幕阅读器、键盘导航、放大工具或其他辅助技术的人。我们的目标是达到《Web 内容无障碍指南》(WCAG)2.2 AA 级。

我们的做法
- 我们使用自动化无障碍工具测试我们的店铺,并修复发现的问题。
- 我们使用键盘和屏幕阅读器测试关键购物步骤(浏览、产品页、购物车和结账)。
- 在添加第三方应用和小组件之前,我们会审查它们的无障碍情况。

已知局限(截至 2026 年 9 月 24 日)
- 键盘访问和焦点(WCAG 2.1.1)。我们计划在 2026-10-08 之前修复此问题。
- 缺少名称的链接和按钮(WCAG 2.4.4、4.1.2)。我们计划在 2026-10-08 之前修复此问题。
- 缺少替代文本的图片(WCAG 1.1.1)。我们计划在 2026-10-08 之前修复此问题。
- 表单字段缺少标签(WCAG 4.1.2)。我们计划在 2026-10-08 之前修复此问题。
- 颜色对比度不足(WCAG 1.4.3)。我们计划在 2026-10-08 之前修复此问题。

反馈和帮助
如果您在使用我们店铺的任何部分时遇到困难,请通过 [您的邮箱] 或 [您的电话号码] 联系我们。请告诉我们具体页面和问题,我们会帮助您完成购买,并在 5 个工作日内回复。

本声明编制于 2026 年 9 月 24 日,并将至少每年审查一次。

证据日志

每个页面都在 Chromium 中加载,并使用 axe-core 4.13.0 测试。SHA-256 哈希值用于标识每个页面的原始结果。

已测试页面,附时间戳和结果哈希值
页面测试时间(UTC)HTTP问题SHA-256
首页https://harborandpine.example/2026-09-24 14:05:0020015da1e5470a57859a864332912dd1e4f62b4c4f64487ba144865b74879519599a3
产品系列页https://harborandpine.example/collections/all2026-09-24 14:05:092002028d8dfcf5ca953af353264a930a351bea3cf23f98a303874b32e5da355a4c8b0
产品页https://harborandpine.example/products/trail-daypack2026-09-24 14:05:182002068a173ddfd16eeeef5e36d6c0fa9d426769f0d96e358c5e35b67608dd84139b4
购物车https://harborandpine.example/cart2026-09-24 14:05:27200125b7945c2cdf779dcef2bd8975d96eb8f42d8dedbf10e767ec80199dd22ce257c
内容页https://harborandpine.example/pages/about2026-09-24 14:05:362009daf61ae856358a574e63f9357db0bfd9ae6079065acf3aebd5b3c5a7f460e53f
附加页面https://harborandpine.example/products/pine-wool-beanie2026-09-24 14:08:0020020f708ccd7de34dfb65d59d3716580b6ec15a6420020c8387fa4da4e2ff5bd52d3
附加页面https://harborandpine.example/products/enamel-camp-mug2026-09-24 14:08:0720019c619bcd29e89d06099d174b9fc19305a42f2fa9bdddb600a750c867fc7477022
附加页面https://harborandpine.example/products/harbor-lantern2026-09-24 14:08:14200205720b7433b75050ba413ac74c2bd726b0620aaa68f7918083052383257d5c418
附加页面https://harborandpine.example/products/insulated-bottle2026-09-24 14:08:21200196f1972c22e477c9a63e2dfde1123ed759718f6a75e1606b23f208848691510fd

范围和方法

我们测试了什么

  • 9 个页面(首页、产品系列页、产品页、购物车、内容页、附加页面),在 Chromium 中以 1366×900 加载。
  • axe-core 4.13.0 中针对 WCAG 2.0、2.1 和 2.2 A 级和 AA 级的规则,以及最佳实践规则(显示为 P3)。
  • 键盘测试:在首页上按 40 次 Tab 键,查找焦点陷阱和缺失的焦点指示。
  • 从首页到结账按钮的纯键盘购物流程(见上文)。
  • 在 首页和产品页上以 320 CSS 像素宽度进行的重排检查(WCAG 1.4.10)。

我们没有测试什么

  • 结账和支付页面、表单提交、账户及需要登录的页面。
  • 屏幕阅读器实际朗读的内容(自动化规则覆盖范围之外的部分)。
  • 视频字幕和音频描述、PDF 文档,以及第三方框架(iframe)中的内容。
  • 通俗易懂的语言、认知无障碍,以及其他任何需要人工判断的内容(见“人工检查”)。

如何解读结果

已确认的未通过项
某项自动化测试或键盘流程未通过,并附有证据。
需复核
某项测试标记了它无法判定的内容;需要有人检查。
通过
该自动化规则在所测页面上未发现未通过项。
未测试
超出了此处自动化测试能覆盖的范围;见“人工检查”。

为您的网站获取这份报告。

先运行免费扫描,查看您网站的问题以及它们与律师函的对应情况。无障碍修复报告一次性 $249,约 10 分钟即可完成。

免费扫描您的网站

本报告描述自动化测试的结果并提供修复指导。它不构成法律意见,也不证明符合 ADA、《欧洲无障碍法案》或任何其他法律。