浏览器会将带有密码输入域的表单进行自动填充,在登录界面给用户带来很大的便利。但是,在非登录表单存在密码输入域时,浏览器也会自动填充,从而会带来一定坏得影响。禁止浏览器对表单自动填充的四种方法如下:
第一种方法:将type=“password” 改为 type="text" ,然后再在必要的时候将其改回password
猜想,浏览器自动填充识别的是 type="password" 然后将该input自动填入密码
那么,我们考虑将type=“password” 改为 type="text" ,然后再在必要的时候将其改回password
这个必要的时候我们选择在当密码的input获得焦点时,即在 时改变type="password",代码如下:
$(\"#psw\").focus(function(event) {
$(this).attr(\'type\',\'password\');
});
以上代码不兼容ie8以下,兼容代码如下:
var isLTIE9 = function(){
var bObj = document.createElement(\'b\');
bObj.innerHTML = \'<!--[if lt IE 9]><i></i><![endif]-->\';
return bObj.getElementsByTagName(\'i\').length === 1;
}
if(!isLTIE9()) {
$(\"#psw\").focus(function(event) {
$(this).attr(\'type\',\'password\');
});
}else{
var pswInput = document.getElementById(\"psw\");
var pswInput2 = pswInput.cloneNode(false);
pswInput2.type=\'password\';
pswInput.parentNode.replaceChild(pswInput2,pswInput);
}
第二种方法:在用户名和密码之间加上一个隐藏的文本框
<input type=\"text\" name=\"name\">
<input type=\"hidden\">
<input type=\"password\" name=\"pass\">
第三种方法:使用假的 input 让浏览器去填充
在页面 <body> 后加入:
<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style=\"display:none\" type=\"text\" name=\"fakeusernameremembered\"/>
<input style=\"display:none\" type=\"password\" name=\"fakepasswordremembered\"/>
这个方案原理是让浏览器去填充用户实际上看不到的 input。虽然看上去代码比较 low,但是很实用
第四种方法:使用 autocomplete 属性
在不需要自动填充的 input 上设置 autocomplete 属性:
<pre name=\"code\" class=\"html\"><input type=\"text\" name=\"name\" autocomplete=\"off\">
<input type=\"password\" name=\"pass\" autocomplete=\"off\">
这个方案只对chrome浏览器生效。
继续阅读与本文标签相同的文章
下一篇 :
php有效防止SQL注入攻击的三种方法
-
性能优化之卡顿延迟
2026-05-14栏目: 教程
-
第16问:Filecoin从DSN角度解读
2026-05-14栏目: 教程
-
C/C+从零基础到精通,究竟是如何快速完成的?其实只需要这6步!
2026-05-14栏目: 教程
-
谷歌再爆重大安全漏洞!华为却成最大赢家?网友:这谁还敢用!
2026-05-14栏目: 教程
-
Excel崩溃文件如何找回
2026-05-14栏目: 教程
