如何使用 Javascript 在 chrome 中禁用保存密码气泡?

IT技术 javascript html angularjs google-chrome internet-explorer-8
2021-03-01 19:52:18

我需要能够防止在用户登录后甚至出现保存密码气泡。

Autocomplete=off 不是答案。

我还没有遇到过为这个问题提供安全解决方案的帖子。真的没有办法禁用Chrome中的密码气泡吗??

6个回答

我发现没有“支持”的方式来做到这一点。

我所做的是将密码内容复制到隐藏字段并在提交之前删除密码输入。

由于提交发生时页面上没有任何密码字段,浏览器从不要求保存它。

这是我的 javascript 代码(使用 jquery):

function executeAdjustment(){       
        $("#vPassword").val($("#txtPassword").val());
        $(":password").remove();        
        var myForm = document.getElementById("createServerForm");
        myForm.action = "executeCreditAdjustment.do";
        myForm.submit();
    }
谢谢 Leon,我们使用您的解决方案稍作修改:我们没有删除密码输入,而是删除值并将类型设置为文本。password.val(""); password.attr("type", "text");.
2021-04-17 19:52:18
这实际上可能更好。我很高兴你发现它很有用!
2021-04-27 19:52:18
@FerranMaylinch,将输入类型从密码更改为文本将显示密码;因此,请确保先停止显示输入。
2021-05-04 19:52:18

经过数小时的搜索,我想出了自己的解决方案,它似乎适用于 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 类本质上是在不“隐藏”它们的情况下使输入字段不可见和不可点击的原因。

我认为这个答案实现起来最简单。
2021-04-29 19:52:18
迄今为止我找到的唯一解决方案,它确实适用于最新的 Chrome(目前为 61)
2021-05-07 19:52:18

添加<input type="password" style="display:none"/>到表单的顶部。Chrome 的自动完成功能将填充它找到的第一个密码输入,以及之前的输入,所以使用这个技巧,它只会填充一个无关紧要的不可见输入。

这对我不起作用。同样,我所指的是完全关闭用户保存密码的选项。我需要防止密码管理器气泡甚至出现。
2021-04-26 19:52:18
我可能做错了什么,但 Chrome(也许他们更新了浏览器)记住了我的变量的名称并将密码附加到该名称。我尝试为隐藏和显示的密码字段指定相同的名称,但仍然无效。我最终为两个密码字段名称使用了一个空数组,name="password[]"。它仍然提示保存密码,但即使您告诉它保存密码,它也不会显示在登录页面的任何位置。在 Chrome 49 上测试。
2021-05-04 19:52:18

最好的解决方案是通过手动用星号或点替换值来模拟输入文本的输入密码。

是的,我已经想到了,但 Alaeddine 是正确的。
2021-04-17 19:52:18
输入文本和密码之间的唯一区别是可以模拟的星号和拒绝从密码复制,可以使用 js 操作来自两个输入的数据。为了确保发送数据的安全,您应该使用 https。
2021-04-25 19:52:18
好主意但不安全
2021-04-26 19:52:18
为什么说常规输入字段不安全?您似乎暗示密码字段更安全,但实际上并非如此。它只是一个显示点/星号而不是文本的常规输入字段,但其内容仍以纯文本形式发送,除非开发人员在发送表单之前进行一些额外的操作。因此,使用常规输入字段并不比使用密码字段安全。唯一的问题可能是移动设备与此伪密码字段的兼容性。
2021-05-05 19:52:18
<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 中测试按预期工作。

从 2015 年 7 月 9 日开始,这非常有效。其他解决方案不再适合我!谢谢!
2021-05-13 19:52:18