在 HTML 中,有一个非常明确的输入类型用于处理密码
<input type="password">
如果您使用它,当您在其中键入时,您会得到模糊的项目符号,例如
••••••••
这是网络试图帮助提高安全性。如果没有这样做,经典的问题是有人可能在您身后偷窥,窥探您输入的内容。我猜想,这比查看您的手指按下的键更容易。
但是 UX 已经发展了一点,并且拥有类似以下选项变得更加普遍:
☑️ 显示密码?
我认为这个想法是我们应该有选择权。我们大多数人可以快速环顾四周,看看是否有窥探的眼睛,如果没有,我们可能会选择显示我们的密码,以便确保我们正确地输入了 I_luv_T@cos696969,并且不会因为输入错误 8 次而遭受痛苦。
所以!该怎么做呢?
type="password"
,然后使用 JavaScript 将其替换为 type="text"
方案 1:使用 这就是现在每个人都在做的事情,因为它是在所有浏览器中都能正常工作的唯一方案。
const input = document.querySelector(".password-input");
// When an input is checked, or whatever...
if (input.getAttribute("type") === "password") {
input.setAttribute("type", "text");
} else {
input.setAttribute("type", "password");
}
这里的问题——除了仅仅因为您必须更改输入类型才能实现这一点而有点奇怪之外——是密码管理器工具。我希望我对此有确切的细节,但它并不让我感到意外,即更改输入类型可能会混淆任何专门设计用于查找和预填充密码的工具,甚至可能是浏览器本身内置的工具。
-webkit-text-security
方案 2:在 CSS 中使用 这不是一个真正的方案,因为您不能只让一项重要功能在某些浏览器中工作,而在其他浏览器中不工作。但显然,在某些时候,人们希望将此功能迁移到 CSS,因为它确实在某些浏览器中有效。
input[type="password"] {
-webkit-text-security: square;
}
form.show-passwords input[type="password"] {
-webkit-text-security: none;
}
input-security
方案 3:CSS 中的 有一个 输入安全 的编辑器草案规范。它基本上是一个切换值。
form.show-passwords input[type="password"] {
input-security: none;
}
我喜欢它。简单。但我认为还没有任何浏览器支持它。因此,实际上,我们目前只能使用方案 #1。
在可访问性方面,实际上有很多注意事项。例如,您不希望屏幕阅读器在用户未处于安全收听状态时宣布此内容。您可能也不希望密码被读取为单词而不是单个字母。宣布字母是大写还是小写也是一个问题。
这是一个有趣的观点。您是否有任何关于如何解决这些问题或如何处理这些问题的想法?我出于好奇对这个主题非常感兴趣。
不错的文章——简洁且有帮助——谢谢
我建议所有对此主题感兴趣的人阅读 https://technology.blog.gov.uk/2021/04/19/simple-things-are-complicated-making-a-show-password-option/ 上的文章。这就是 gov.uk 如何以完全可访问的方式实现这一点的。
根据我的经验,密码管理器仅在提交密码时才建议保存密码。在提交之前将
type
切换回password
应该可以与密码管理器正常配合使用。