使用 Chrome 开发者工具查找表单问题

Chrome 开发者工具团队正在构建其他新功能,以帮助您查找表单问题和调试自动填充。

在 Chrome Canary 中,我们正在测试开发者工具中的新功能,这些功能旨在帮助开发者了解表单自动填充功能的运作方式,以及表单自动填充有时失败的原因:

  • 浏览器自动填充功能如何将存储的值映射到表单字段?
  • 自动填充功能会使用哪些条件来填写表单字段?
  • 自动填充功能不会填充哪些字段?
  • 为什么自动填充功能无法填充某个表单字段?

本文简要介绍了 Chrome 开发者工具中的新功能,并说明了如何测试这些功能并提供反馈。

什么是自动填充?

Chrome 可安全地存储数据集,并让用户无需输入文本即可填写表单字段,从而帮助用户管理地址、付款信息和登录信息。这称为自动填充。

当您提交表单时,Chrome 会询问您是否保存自动填充数据。在移动设备上:

三张 Android 屏幕截图:Chrome 中的地址表单、Chrome 自动填充功能提示保存地址,以及用于修改新自动填充条目的对话框。

随后,Chrome 会询问能否使用已保存的数据自动填充表单。

在移动设备上:

在桌面设备上:

Chrome 可在桌面设备上自动填写地址表单

您可在 Chrome 设置中管理自动填充数据。

在移动设备上:

Android 上的 Chrome 设置:修改地址

在桌面设备上:

chrome://settings/addresses 页面,显示了两个示例地址

您可能还会看到 Chrome 针对与地址、信用卡或登录数据无关的输入字段提供建议。除了为结构化数据集(例如地址和付款信息)提供自动填充功能之外,Chrome 还可以帮助用户避免为自动填充功能无法处理的单个表单字段重新输入数据。如果表单包含 Chrome 之前遇到过的具有名称属性的字段,Chrome 可以建议值,这样您便无需重新输入数据。

下面是一个简单的示例:

Chrome 可在单个表单字段中提供针对非结构化数据的建议

Chrome 开发者工具显示,此处的表单字段不包含对浏览器有意义的属性。而是 n300 的一个 name 属性。

Chrome 开发者工具在表单中显示非结构化数据的相关信息,如上例所示:单个输入仅具有 type=text 和 name=n300 属性。

该字段与一组结构化数据中的值不对应,导致其适用于 Chrome 自动填充功能,但如果日后遇到具有此名称的字段,Chrome 仍可以帮助用户。

测试新的 Chrome 开发者工具自动填充功能

Chrome 正在测试开发者工具 Issues 面板的新功能,以帮助调试自动填充故障。

您可以在 Chrome Canary 版中试用这些新功能。在开发者工具中依次点击 设置。“Settings”(设置)>“Experimental”(实验)> 复选框。 突出显示 Elements 面板 DOM 树中的违规节点或属性,并在出现提示时重新加载开发者工具。

Chrome 开发者工具设置页面,显示了“突出显示违规节点 ...”

或者,您也可以从命令行使用 AutofillEnableDevtoolsIssues 标志运行 Chrome Canary:

  • Windows:shell start chrome --restart --flag-switches-begin --enable-features=AutofillEnableDevtoolsIssues
  • Mac:shell open -a "Google Chrome Canary" --args --restart --flag-switches-begin --enable-features=AutofillEnableDevtoolsIssues

如需检查是否存在问题,请在包含表单的页面上打开开发者工具 Issues 面板。从 form-problems.glitch.me 着手是不错的选择。

Chrome 开发者工具显示表单元素的 for 属性存在问题。

如您所见,这个表单乱七八糟!有:

  • 没有 idname 属性的输入字段。
  • ID 重复的元素。
  • <label>for 属性与元素 ID 不匹配。
  • 具有空 autocomplete 属性的字段。

将鼠标悬停在 DOM 树中突出显示的元素上,然后点击查看问题了解详情。

Chrome 开发者工具中的问题:属性标签的使用不正确。

点击违规节点可查看每个问题受影响的资源。此表单有 8 个标签,但这些标签的 for 属性与表单字段的 id 不匹配。

使用开发者工具改进表单无障碍功能

开发者工具还可以突出显示自动填充无障碍功能问题,例如表单字段没有 aria-labelledby 属性或关联的 <label>

Chrome 开发者工具“无障碍功能”面板,显示找到了表单中的输入元素的标签。

在此示例中,<input> 元素具有一个匹配的标签。这意味着,辅助设备可以读出元素的用途。但是,在下面的示例中,未找到匹配的标签或 aria-labelledby 属性。

Chrome 开发者工具的“无障碍功能”面板,显示表单中的输入元素未找到匹配的标签或 aria-labelledby 属性。

针对开发者工具中的新自动填充功能提供反馈

您可以使用以下选项讨论博文中的新功能和变化,或讨论与开发者工具相关的任何其他内容:

了解详情

  • 学习表单:关于 HTML 表单的课程,可帮助您提高 Web 开发者的专业知识。非常适合刚开始接触表单和自动填充功能的用户。
  • web.dev/tags/forms:有关付款、登录和地址表单的指南、最佳实践和 Codelab。