ChatGPT解决这个技术问题 Extra ChatGPT

autocomplete="off" 是否与所有现代浏览器兼容?

我刚刚被要求阻止浏览器保存输入到特定表单字段中的数据。自从我做 Web 开发以来已经有好几年了,这是一个相对较新的能力。我能够找到表单字段属性 autocomplete="off",但似乎找不到任何说明哪些浏览器支持它的文档。谁能指出表单属性和浏览器兼容性图表的正确方向?

@camigreenall - 不是重复的;您链接到的问题提供了如何做的答案;我要求的是浏览器兼容性的文档。

C
Community

请注意,所有主要浏览器都在向 ignoring the attribute for password fields 移动。

我只能提供轶事证据,但我还没有遇到不尊重 autocomplete="off" 的浏览器,此经验包括:

Firefox 1.5+(Windows 和 Ubuntu)

Opera 6+(Windows 和 Ubuntu)

Chrome v2+(Windows 和 Ubuntu)

顿悟 0.8 (ish) (Ubuntu)

Midori(我不记得是哪个版本)

Safari v1+ (Windows)

IE 4 - 8,Windows。

我知道 Greasemonkey 脚本以及可能的其他用户脚本可以禁用 autocomplete 设置。

我发现有几篇文章可能对您有用:

如何关闭表单自动完成 在 html 表单中使用自动完成


感谢那些文章。我知道有些脚本可以禁用该设置,但我们能做的只有这么多。如果有人希望他们的浏览器将他们的信用卡信息保存在他们的个人计算机上,我们无法阻止它。我们真的在努力避免将数据保存在共享机器上。
@EmmyS,不,那是真的。一个相当有技术意识的用户会费心实施一个反自动完成的解决方案,用户在他们的机器上对你的网站做什么取决于他们,而不是你。 =)
@DavidThomas - 感谢您提供兼容性列表,在 caniuse、w3c 或其他地方找不到好的兼容性列表。 :) +1
@EmmyS “我们真的在努力防止数据被保存在共享机器上。”正确的做法是在共享机器上正确设置浏览器,这样它们就不会在会话之间保留任何信息。
@curiousguy - 是的,如果您可以控制共享机器,那是个好主意。在那种情况下我们没有。
p
pferate

密码管理器现在忽略主要浏览器中 password 字段的 autocomplete 属性:

IE11

火狐 30

铬 34

Safari 似乎有一个选择加入选项来忽略它们

在表单字段上禁用 autocomplete 应该仍然可以正常工作,但不再影响密码管理器。


它没有。我刚测试过。甚至在表单字段上放置了额外的 autocomplete="false",除了一个,它存在于表单元素本身上。一点效果都没有。我会说,所有主要浏览器都会忽略自动完成功能。
C
ChrisAdmin

从 Chrome v34 开始,autocomplete="off" 现在默认被忽略。

可以通过访问 chrome://flags 在标志配置中禁用这个有点争议的功能

http://news.softpedia.com/news/Chrome-34-Seeks-to-Save-All-Your-Passwords-436693.shtml


请注意,Chrome 中的此更改仅影响密码字段。非密码字段仍然尊重 autocomplete="off" 属性。
J
Jeroen

如果您能够使用 JavaScript 和 jQuery,则可以将其放在 html 的加载中:

$('#theform input').val('');

这是在使用 Mootools 的 Joomla 内部使用的——与 mootools 和 jquery 存在冲突,所以我不能这样做。不过,我会记住它以供将来参考。
参考 mootools 文档,您可以执行 $$('.emptyThisInForm').each(function(el){ el.value = ''; });
此代码将弄乱复选框和单选按钮。可能更优雅的是 $('#theform')[0].reset() 将其强制恢复为 HTML 中指定的默认值。
要仅影响密码字段,您可以使用更具体的 jQuery 选择器,例如:$( '#theform input:password' ).val('');
D
Deekor

除了Maxthon Browser,我认为他们在中国很有名,现在在全世界都享有盛名。他们没有很好地对待 Autotocomplete=off power。这对他们不起作用。


是的,Maxthon 不会尊重 autocomplete=off,但您可以通过设置 ismxfilled='0' 强制它不自动完成该字段
C
Community

某些解决方案在现代浏览器中不起作用。

此处提供了另一个解决方案链接。它适用于所有现代浏览器。

Input type=password, don't let browser remember the password

您可以在这个给定的解决方案中使用 autocomplete="off"


N
NixRam

事实上,在所有最新的浏览器中,用户名和密码字段都不会对 AutoComplete=off 做出反应。


t
thisisashwani

td;dr:要检查跨浏览器的兼容性,这里是关于关闭自动完成的官方 MDN 文档,其中包含兼容性链接 - https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

稍长一点的回答:您的问题是由于 Chrome 的自动填充功能,这是 Chrome 在此错误链接中的立场 - https://bugs.chromium.org/p/chromium/issues/detail?id=468153#c164

简单来说,有两种情况——

[案例 1]:您的输入类型不是密码。在这种情况下,解决方案很简单,分为三个步骤。向输入名称添加名称属性不应以电子邮件或用户名之类的值开头,否则 Chrome 仍会显示下拉列表。例如,name="emailToDelete" 显示下拉列表,但 name="to-delete-email" 不显示。同样适用于自动完成属性。添加 autocomplete 属性,并添加一个对您有意义的值,例如 new-field-name 它将看起来像这样,您将不会再次看到此输入的自动填充(并且您输入的值不会被缓存)余生 -

将名称属性添加到输入

名称不应以电子邮件或用户名之类的值开头,否则 Chrome 仍会显示下拉列表。例如,name="emailToDelete" 显示下拉列表,但 name="to-delete-email" 不显示。同样适用于自动完成属性。

添加自动完成属性,并添加对您有意义的值,例如 new-field-name

[CASE 2]: input type is password 好吧,在这种情况下,无论您是否尝试过,Chrome 都会向您显示管理密码/使用现有密码的下拉菜单,并显示更新缓存密码的提示。 Firefox 也会做类似的事情,所有其他主要浏览器也是如此。看看我在最顶部分享的 MDN 文档链接。在这种情况下,如果您真的想阻止用户看到管理密码的下拉菜单或保存凭据的提示,您将不得不使用 JS 来切换输入类型,如其他相关问题中所述。

好吧,在这种情况下,无论您进行何种试验,Chrome 都会向您显示管理密码的下拉菜单/使用现有密码并显示更新缓存密码的提示。 Firefox 也会做类似的事情,所有其他主要浏览器也是如此。看看我在最顶部分享的 MDN 文档链接。

在这种情况下,如果您真的想阻止用户看到管理密码的下拉菜单或保存凭据的提示,您将不得不使用 JS 来切换输入类型,如其他相关问题中所述。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅