keb*_*ben 6 html css cross-browser typescript angular
在现代浏览器中,自动填充和自动完成功能的标准是完全忽略autocomplete="off"放置在中的密码字段form。并插入保存的密码,即使它位于用户管理页面中也是如此。尽管原因在正确的地方,但这使创建用户管理页面变得非常痛苦。
我团队的Web应用程序以angular 7运行,目前仅支持chrome。但是我们很有可能需要支持其他浏览器,例如Internet Explorer,Edge,Firefox等。
我知道这是一个很大程度上受感动,而且我能找到类似这个问题(解答问题这样的,或本)。但是到目前为止,我发现的每个解决方案都有至少一个大缺陷。
到目前为止,我在chrome上所做的尝试:
autocomplete="new-password"铬/铬开发人员似乎对此也忽略了这一点type="password"。
type="text" autocomplete="new-password"与星号字体家族一起使用这会导致Chrome无法自动填充输入字段并隐藏字母。但是最大的缺点是它的价值仍然存在,并且可以复制粘贴到其他字体系列中。输入字段也失去了安全性type="password",任何黑客都可以轻松获得价值。
该解决方案与以前的解决方案几乎相同,但是它甚至不是CSS标准,并且很少有浏览器支持它。
这是我到目前为止尝试过的最棘手的解决方案。当输入值更改时,我在打字稿中调用一个函数:将新字符添加到本地字符串,将DOM值更改为*等于字符数,在上返回本地保存的值(blur)。
这给我留下了很多问题要解决,包括:删除字符串中的任何字符总是会删除最后一个字符,除了最后一个问题外,即使值被完全擦除,第一个字符也将始终保持不变。知道字符串中要删除字符的位置。
该解决方案不理想。
这确实不是解决问题的方法,因为这意味着我希望用户关闭域的密码管理。这还会导致许多用户可能需要的密码无法保存在登录页面上。
[name]和[autocomplete]取值通过将所述值绑定到基于当前时间的随机字符串的一种方法,我可以确保密码字段与浏览器保存的任何字段都不匹配。尽管许多人报告说这在所有浏览器之间都有效,但是使用chrome似乎根本不适合我。对于我来说,只要输入的是,Chrome就会显示建议的密码type="password"。
到目前为止我看到的解决方案:
在我看来,这与我自己的解决方案4)相同。并且可能会同样麻烦。
这似乎非常接近我在寻找什么,但问题是它使用了jQuery。我只能说我被告知我们没有使用jQuery,而且我可能将无法直接使用该插件。
我目前正在寻找一种使用angular来实现此方法的方法,希望能对此有所帮助或指示。
如果您知道我上面没有提到的任何解决方案,请发布答案或在评论中给我链接。
到目前为止,我发现的最佳解决方案是type="text"在密码字段上使用,并autocomplete="off"在表单及其中的每个输入字段上使用。
然而,我不会将此标记为答案,因为它仍然存在失去type="password"安全功能的巨大缺陷。文本字段还允许拼写检查,可以使用 禁用该拼写检查spellcheck="false"。但我读到可以通过浏览器设置来覆盖它。
在提出更好的解决方案之前,这个问题将一直没有答案。
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |