有没有办法在JavaScript中获得自动填充密码框的价值?

时间:2016-02-19 07:37:50

标签: javascript jquery browser-security

var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
    inputs[i].onfocus = foo;
}
function foo(){
    alert(this.value);
}

手动输入输入值时
无论输入字段的类型如何,上面的代码都可以正常工作并发出警报。

当浏览器自动填充输入值时
当输入字段是文本类型时,代码工作并警告正确的值。如果是密码字段,它会提醒空字符串!

这种行为是因为浏览器的安全策略吗?或者有可能的解决方法吗?我在Chrome浏览器中试过了。

2 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
  $("input")
      .blur(password)
      .trigger('blur');
});

function password() {
   alert($(this).val())
}

DEMO

答案 1 :(得分:2)

这是一个有趣的问题,因为我认为您指的是Chrome中安全功能的副作用。

Chrome(可能还有其他浏览器)实际上可能无法使用自动填充的密码填充DOM,因为恶意程序员可能会编写一个JavaScript,试图在页面加载时从不知情的受害者那里窃取自动填充的密码。

您很可能要求用户点击提交按钮才能获得对该信息的访问权限。

您可以在提交实际发生之前强制表单提交并检查值。如果可以,那么您可以通过在&#34; onsubmit&#34;中返回false来取消提交。你现在有了密码。