显示密码的输入选项的构建方法

465 阅读2分钟

在HTML中,有一个非常明确的输入类型用于处理密码。

<input type="password">

如果你使用这个,当你输入时就会得到混淆的弹出点,比如。

--------

这就是网络试图帮助解决安全问题。如果它不这样做,典型的问题是有人可能在你的肩膀上窥视,偷看你输入的内容。我想,这比看你的手指按了什么键更容易。

但用户体验已经有了一些变化,现在有一个选项更常见,比如。

☑️揭开密码?

我认为这个想法是,我们应该有一个选择。我们大多数人都可以快速查看一下,看看是否有偷窥者,如果没有,我们可能会选择透露密码,这样我们就可以确保我们正确输入I_luv_T@cos696969,而不是让我们承受打错8次密码的痛苦。

那么!该怎么做?

选项1:使用type="password" ,然后用JavaScript把它换成type="text"

这是每个人现在都在做的事情,因为它是目前在所有浏览器上都有效的方法。

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");
}

这里的问题--除了你必须为此而改变输入类型有点奇怪之外--是密码管理器工具。我希望我有这方面的确切细节,但我并不感到惊讶,乱用输入类型可能会混淆任何专门用于寻找和预填密码的工具,甚至可能是浏览器本身内置的工具。

选项2:在CSS中使用-webkit-text-security

这不是一个真正的选择,因为你不可能让一个总的输入法在某些浏览器中工作,而在其他浏览器中不工作。但是,很明显,人们希望在某个时候把这个功能移到CSS中,因为它在一些浏览器中确实有效。

input[type="password"] {
  -webkit-text-security: square;
}
form.show-passwords input[type="password"] {
  -webkit-text-security: none;
}

选项3。 i**nput-security**在CSS中

有一个关于输入安全的编辑草案规范。它基本上是一个切换值。

form.show-passwords input[type="password"] {
  input-security: none;
}

我喜欢它。很简单。但我认为还没有任何浏览器支持它。所以,从现实的角度看,我们现在只能用1号方案了。