禁用 Chrome 自动填充

2023-12-20

我在几个表单上遇到了 chrome 自动填充行为的问题。

表单中的字段都有非常常见且准确的名称,例如“电子邮件”、“姓名”或“密码”,并且它们还具有autocomplete="off" set.

自动完成标志已成功禁用自动完成行为,即当您开始键入时会出现一个值下拉列表,但并未更改 Chrome 自动填充字段的值。

这种行为是可以的,除非 chrome 错误地填充了输入,例如用电子邮件地址填充了电话输入。客户对此有所抱怨,因此经证实,这种情况在多种情况下都会发生,而不是我在机器上本地执行的操作的某种结果。

我目前能想到的唯一解决方案是动态生成自定义输入名称,然后在后端提取值,但这似乎是解决此问题的一种非常古怪的方法。是否有任何标签或怪癖会改变自动填充行为,可用于解决此问题?


2023 年 6 月: autocomplete="one-time-code"在 Chrome 中工作https://robindirksen.com/blog/html-autocomplete-one-time-code https://robindirksen.com/blog/html-autocomplete-one-time-code

2022 年 4 月: autocomplete="off"在 Chrome 中仍然不起作用,而且在查看与该问题相关的 Chromium 错误后(可能仅适用于密码字段),我相信它永远不会起作用。我看到报告的问题2014 https://bugs.chromium.org/p/chromium/issues/detail?id=370363被关闭为“WontFix”,问题仍然悬而未决并正在讨论中[1] https://bugs.chromium.org/p/chromium/issues/detail?id=587466[2] https://bugs.chromium.org/p/chromium/issues/detail?id=914451。据我所知,Chromium 团队不认为存在有效的用例autocomplete="off".

总的来说,我仍然认为两种极端策略(“始终遵守 autocomplete=off”和“从不遵守 autocomplete=off”)都不是好的。

https://bugs.chromium.org/p/chromium/issues/detail?id=914451#c66 https://bugs.chromium.org/p/chromium/issues/detail?id=914451#c66

他们认为网站不会正确使用此功能,因此决定不应用它,并提出以下建议:

如果您想禁用自动填充,我们的建议是 利用自动完成属性为您的内容赋予语义意义 字段。如果我们遇到了我们没有遇到的自动完成属性 认识到,我们不会尝试填补它。

例如,如果您的 CRM 工具中有一个地址输入字段 如果你不希望 Chrome 自动填充,你可以给它语义 这意味着相对于您所要求的内容有意义:例如 自动完成=“新用户街道地址”。如果 Chrome 遇到这种情况, 不会尝试自动填充该字段。

https://bugs.chromium.org/p/chromium/issues/detail?id=587466#c10 https://bugs.chromium.org/p/chromium/issues/detail?id=587466#c10

尽管这个“建议”目前对我有用,但它可能并不总是正确,而且团队似乎正在进行实验,这意味着自动完成功能可能会在新版本中发生变化。

我们不得不诉诸于此,这很愚蠢,但唯一可靠的方法是尝试尽可能地迷惑浏览器:

  • 命名您的输入而不向浏览器泄露任何信息,即id="field1"代替id="country".

  • Set autocomplete="do-not-autofill",基本上使用任何不会让浏览器将其识别为可自动填充字段的值。


2021 年 1 月: autocomplete="off"现在确实可以按预期工作(在 Chrome 88 macOS 上测试)。

为此,请确保将输入标签放在表单标签内


2020 年 9 月: autocomplete="chrome-off"禁用 Chrome 自动填充。


原始答案,2015年:

对于新的 Chrome 版本,您只需输入autocomplete="new-password"在您的密码字段中,仅此而已。我检查过,工作正常。

在这次讨论中从 Chrome 开发者那里得到了这个提示:https://bugs.chromium.org/p/chromium/issues/detail?id=370363#c7 https://bugs.chromium.org/p/chromium/issues/detail?id=370363#c7

附:请注意,Chrome 将尝试从名称、ID 以及它可以在字段周围获取的任何文本内容(包括标签和任意文本节点)推断自动填充行为。如果有一个自动完成标记,例如street-address在上下文中,Chrome 会自动填充该内容。这种启发式方法可能会非常令人困惑,因为它有时仅在表单中存在其他字段时触发,而如果表单中的字段太少则不会触发。另请注意autocomplete="no"似乎可以工作,但是autocomplete="off"由于历史原因不会。autocomplete="no"您是否告诉浏览器该字段应该作为名为的字段自动完成"no"。如果您生成唯一的随机数autocomplete您禁用自动完成的名称。

如果您的用户访问过不良表单,他们的自动填充信息可能是corrupt。让他们手动进入并修复 Chrome 中的自动填充信息可能是他们需要采取的必要操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用 Chrome 自动填充 的相关文章

随机推荐

  • 列出字典中以<用户输入>开头的所有单词

    如何编写一个程序 让用户输入一个字符串 然后该程序生成一个以该字符串开头的单词列表 Ex 用户 和 方案 退位 收腹 绑架 Thanks 编辑 我正在使用 python 但我认为这是一个相当独立于语言的问题 Use a trie http
  • 在 C++ 中将枚举值映射到字符串

    有没有办法在运行时将枚举的值映射到名称 我正在与 GCC 一起构建 我知道 GDB 可以做到这一点 并且我愿意使用一些不可移植且会破坏调试数据的东西 Edit 我正在寻找一种解决方案 不需要修改原始枚举声明 也不需要手动复制映射函数中的所有
  • 在 C# 中,如果一个类或方法没有标记为 seal 或 virtual,那它是什么?

    换句话说 默认值是什么 如果没有指定 我猜默认是虚拟的 因为即使基本方法没有指定虚拟 您也可以使用 new 关键字来覆盖基本方法 如果是这样的话 那么为什么我们还需要虚拟选项呢 当我们确实需要防止进一步继承时 我们难道不能只使用 Seale
  • 如何使用循环创建字符串向量?

    我正在尝试使用循环在 R 中创建字符串向量 但遇到了一些麻烦 我将不胜感激任何人可以提供的任何帮助 我正在使用的代码更详细一些 但我尝试在这里编写一个可重现的示例 该示例捕获了所有关键位 vector1 lt c 1 2 3 4 5 6 7
  • Uploadify不传递变量,Session问题?

    出于对 pete 的热爱 我无法让它接受任何变量到我的 SQL 数据库中 如果我输入静态信息 它就会起作用 我似乎无法通过 scriptdata 传递任何参数 这使得它更具挑战性 因为我在顶部使用 smarty 模板系统 我正在尝试这样做
  • 如何在asp.net mvc中的url中追加字符串?

    设想 我的网址采用以下模式 本地主机 8080 专辑 routes MapRoute name AlbumHome url Albums albumName defaults new controller Albums action Ind
  • 如何通过子项更改父项样式:LESS 中的悬停操作

    我有这个较少的设置 wrapper parent height 100px children some style hover parent height 150px 我需要通过将鼠标悬停在其中的某个子元素上来更改父元素的高度 这段代码不起
  • 如何在 cygwin 上安装 gcc?

    uname r 2 9 0 0 318 5 3 安装 cygwin 后 我的路径上没有 gcc 或 g 命令 我需要安装哪些软件包才能获取此命令 Ok 您应该启动 cygwin setup x86 64 exe 的安装程序 如果您已将其从计
  • then 语句中的异步 Mongoose 回调

    我在使用承诺和异步调用时遇到问题Mongoose 这是我的代码 req checkBody BookManager SCHEME req getValidationResult then function result if result
  • 如何获取 Jenkins 登录用户

    我需要将记录的用户 ID 信息获取到 Jenkins 插件中 我创建了 HelloWorldclass 它扩展了 hudson tasks Builder 类来创建插件 从这个课程中 我试图在执行方法中获取登录用户 我尝试了各种选项 但无法
  • 如果适配器中的所有项目都显示,则隐藏自定义搜索栏

    我遇到的问题是listView getLastVisiblePosition总是返回 1 所以我无法隐藏searchView 我在设置后立即检查这一点adapter在我尝试放置它的任何地方它仍然返回 1 我在中没有看到Docs http d
  • stat_sum 和 stat_identity 给出奇怪的结果

    我有以下代码 包括随机生成的演示数据 n lt 10 group lt rep 1 4 n mass means lt c 10 20 15 30 mass sigma lt 4 score means lt c 5 5 7 4 score
  • 如何使用具有元素类型和ID的jquery选择器

    我正在使用这个选择器 textarea myTextArea val text 它不起作用 如果我删除 ID 并使用它正在工作的类 为什么jquery无法在这里找到元素 因为空间 与空间它说 myTextArea在一个textarea te
  • 在android中实现authorize.net

    我想开发一个通过authorize net进行付款处理的应用程序 但每次我都会遇到未知错误 首先 我填充所有文本框并在按钮单击事件上使用这些值 我的代码是 txtAmount Double parseDouble Amount getTex
  • Java 的 UDP _DatagramSocket.connect()_ 是做什么的?

    我最近看了一个关于 Java 的 UDP API 的小教程 并且查看了 javadocsDatagramSocket and DatagramPacket类 班上DatagramSocket包含几个connect 和一个disconnect
  • 如何在最后访问多个 Completablefuture Stage 变量

    我尝试在 completablefuture 管道的末尾使用多个不同的变量 很难解释 这是我的例子 private void test lib getHumanFromDatabase thenApplyAsync human gt ret
  • 如何在不阻塞事件循环的情况下迭代大列表

    我有一个正在运行的 asyncio 事件循环的 python 脚本 我想知道如何在不阻塞事件循环的情况下迭代一个大列表 从而保持循环运行 我尝试过制作自定义课程 aiter and anext 这不起作用 我也尝试过制作async func
  • 使用 gitlab-ci 构建多个 Docker 镜像

    我正在尝试配置一个gitlab ci yml文件来自动构建两个 Docker 镜像 我已经看到它是用 docker compose 完成的 但就我而言 我不想使用 docker compose The docker compose yml我
  • WPF DatePicker LostFocus 触发七次

    我这里有一个非常简单的场景 请看一下布局
  • 禁用 Chrome 自动填充

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我在几个表单上遇到了 chrome 自动填充行为的问题 表单中的字段都有非常常见且准确的