如何去除浏览器自带保存密码功能?

之前在做登录的时候出现一个这样的bug,点击登录时浏览器会提示”保存密码”这个提示,然后如果用户在外地比如网吧上网时候不小心点击了这个”保存”就麻烦了,关机走了下个人进来直接就登录进去了,像我们做钱包的别人直接进去了资金就不安全了,而且还可以在火狐浏览器里的cookie里查找出密码明文,所以产品一直要求我们前端把这个提示去掉,我也百度了好久,有各式各样的办法,但没有发现一个是真正解决了这个提示的,废话不说了,直接上代码:

上代码之前说下我的原理:浏览器之所以会提示”保存”这个提示是因为浏览器判断出你提前的表单里有type=”password”这个属性,所以要从根本上去除这个属性就不会提示了,所以办法就是用二个type:text,当聚焦时改成password,失去焦点时改回text,然后用“●”代替密码,如下:

type="text" onfocus="removePwdDrop.falseOnfocus()" id="falsePwd" placeholder="登录密码" style="display:none;" />
type="text" onfocus="removePwdDrop.pwdOnfocus(this)" onblur="removePwdDrop.pwdOnblur(this)" tabindex="2" onpaste="return false" ondrop="return false" ondragenter="return false;" ondragstart="return false" name="passwdput" id="memberpasswd" class="loginInput" placeholder="登录密码" autocomplete="new-passwdput" autocomplete="off" />

//注解:pwd1:假密码框,pwd2:真密码框,要提交的
var removePwdDrop = {
        pwdOnfocus: function (obj) { // 当鼠标聚焦时把类型改为password,默认为text
            obj.style.display = 'block';
            obj.setAttribute('type', 'password');
        },
        pwdOnblur: function(obj){ // 当鼠标失去焦点时,之前输入的密码赋值给pwd1里面用“●”代替
            var pwd1 = document.getElementById("falsePwd")
            var isChrome = window.navigator.userAgent.indexOf("Chrome")
            pwd1.value = ''
            var length = obj.value.length;
            for(var i = 0;iif(isChrome < 0){
                    pwd1.value += '●'
                }else{
                    pwd1.value += '\u2022'
                }
            }
            obj.setAttribute('type', 'text');
            obj.style.display = 'none';
            pwd1.style.display = 'block';
        },
        falseOnfocus: function () { // 这里当鼠标聚焦到pwd1上时,把光标焦点转移到pwd2上面,这里会执行pwdOnfocus()方法,自身隐藏,
            var pwd1 = document.getElementById("falsePwd")
            var pwd2 = document.getElementById("memberpasswd")
            pwd1.style.display ="none";
            pwd2.style.display ="";
            pwd2.focus();
        }
    }

如果有不对的地方,欢迎指正!!!

你可能感兴趣的:(小技巧)