由于大多数autocomplete
建议(包括已接受的答案)在当今的网络浏览器中均不起作用(即,网络浏览器的密码管理器忽略autocomplete
),因此,一种更新颖的解决方案是在password
和text
类型之间进行交换,并在字段中使背景颜色与文本颜色匹配是一个纯文本字段,当用户(或类似KeePass的程序)输入密码时,它将继续隐藏密码,同时仍然是真实的密码字段。浏览器不要求保存存储在纯文本字段中的密码。
这种方法的优势在于它允许逐步增强,因此不需要将Javascript用作正常的密码字段即可(您也可以以纯文本字段开头并应用相同的方法,但这并不是真正的HIPAA符合PHI / PII)。这种方法也不依赖于隐藏的表单/字段,这些表单/字段可能不一定会发送到服务器(因为它们是隐藏的),并且其中一些技巧在某些现代浏览器中也不起作用。
jQuery插件:
https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js
来自以上链接的相关源代码:
(function($) {
$.fn.StopPasswordManager = function() {
return this.each(function() {
var $this = $(this);
$this.addClass('no-print');
$this.attr('data-background-color', $this.css('background-color'));
$this.css('background-color', $this.css('color'));
$this.attr('type', 'text');
$this.attr('autocomplete', 'off');
$this.focus(function() {
$this.attr('type', 'password');
$this.css('background-color', $this.attr('data-background-color'));
});
$this.blur(function() {
$this.css('background-color', $this.css('color'));
$this.attr('type', 'text');
$this[0].selectionStart = $this[0].selectionEnd;
});
$this.on('keydown', function(e) {
if (e.keyCode == 13)
{
$this.css('background-color', $this.css('color'));
$this.attr('type', 'text');
$this[0].selectionStart = $this[0].selectionEnd;
}
});
});
}
}(jQuery));
演示:
https://barebonescms.com/demos/admin_pack/admin.php
单击菜单中的“添加条目”,然后滚动到页面底部的“模块:停止密码管理器”。
免责声明:尽管此方法适用于有视力的人,但屏幕阅读器软件可能存在问题。例如,屏幕阅读器可能会大声读取用户密码,因为它会看到纯文本字段。使用上述插件可能还会带来其他无法预料的后果。应当通过测试各种条件和边缘情况来谨慎地更改内置的Web浏览器功能。