我需要能够防止在用户登录后甚至出现保存密码气泡。
Autocomplete=off 不是答案。
我还没有遇到过为这个问题提供安全解决方案的帖子。真的没有办法禁用Chrome中的密码气泡吗??
我需要能够防止在用户登录后甚至出现保存密码气泡。
Autocomplete=off 不是答案。
我还没有遇到过为这个问题提供安全解决方案的帖子。真的没有办法禁用Chrome中的密码气泡吗??
我发现没有“支持”的方式来做到这一点。
我所做的是将密码内容复制到隐藏字段并在提交之前删除密码输入。
由于提交发生时页面上没有任何密码字段,浏览器从不要求保存它。
这是我的 javascript 代码(使用 jquery):
function executeAdjustment(){
$("#vPassword").val($("#txtPassword").val());
$(":password").remove();
var myForm = document.getElementById("createServerForm");
myForm.action = "executeCreditAdjustment.do";
myForm.submit();
}
经过数小时的搜索,我想出了自己的解决方案,它似乎适用于 Chrome 和 Safari(虽然不适用于 Firefox 或 Opera,而且我还没有测试过 IE)。诀窍是用两个虚拟字段包围密码字段。
<input type="password" class="stealthy" tabindex="-1">
<input type="password" name="password" autocomplete="off">
<input type="password" class="stealthy" tabindex="-1">
这是我使用的 CSS:
.stealthy {
left: 0;
margin: 0;
max-height: 1px;
max-width: 1px;
opacity: 0;
outline: none;
overflow: hidden;
pointer-events: none;
position: absolute;
top: 0;
z-index: -1;
}
注意:虚拟输入字段不能再display: none像许多人建议的那样隐藏,因为浏览器会检测到并忽略隐藏的字段,即使字段本身不是隐藏的而是包含在隐藏的包装器中。因此,CSS 类本质上是在不“隐藏”它们的情况下使输入字段不可见和不可点击的原因。
添加<input type="password" style="display:none"/>到表单的顶部。Chrome 的自动完成功能将填充它找到的第一个密码输入,以及之前的输入,所以使用这个技巧,它只会填充一个无关紧要的不可见输入。
最好的解决方案是通过手动用星号或点替换值来模拟输入文本的输入密码。
<input type="textbox" id="UserID" />
<input type="password" style="display:none"/>
<input type="textbox" id="password" />
<script>
function init() {
$('#password').replaceWith('<input type="password" id="password" />');
}
</script>
在 Firefox 和 chrome 中测试按预期工作。