var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
inputs[i].onfocus = foo;
}
function foo(){
alert(this.value);
}
手动输入输入值时
无论输入字段的类型如何,上面的代码都可以正常工作并发出警报。
当浏览器自动填充输入值时
当输入字段是文本类型时,代码工作并警告正确的值。如果是密码字段,它会提醒空字符串!
这种行为是因为浏览器的安全策略吗?或者有可能的解决方法吗?我在Chrome浏览器中试过了。
答案 0 :(得分:2)
$(document).ready(function() {
$("input")
.blur(password)
.trigger('blur');
});
function password() {
alert($(this).val())
}
答案 1 :(得分:2)
这是一个有趣的问题,因为我认为您指的是Chrome中安全功能的副作用。
Chrome(可能还有其他浏览器)实际上可能无法使用自动填充的密码填充DOM,因为恶意程序员可能会编写一个JavaScript,试图在页面加载时从不知情的受害者那里窃取自动填充的密码。
您很可能要求用户点击提交按钮才能获得对该信息的访问权限。
您可以在提交实际发生之前强制表单提交并检查值。如果可以,那么您可以通过在&#34; onsubmit&#34;中返回false来取消提交。你现在有了密码。