由于大多数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 浏览器功能。