浏览器中记住密码功能是很强大的,不过在做开发时,运到一个很奇怪的是问题,如下:
输入用户名密码,提交登录。浏览器会提示是否记住密码。
然后在修改密码页面,浏览器会有不同的处理。
chrome/IE等不会有影响,在修改密码页面,密码框会为空,需要手动输入。
但是firefox却因为记住密码功能,会自动填充到密码框内。
昨天在测试的时候发现了一个很怪异的问题.原本的设计逻辑是:当用户修改用户信息的时候.密码一栏默认是空.就表示用户不修改密码.只有密码一栏填写了值的时候后台才会更新密码.在ie和chrome下测试都没有发现问题.但是在在火狐下其他的修改页面.也没有问题.只是其中一个编辑页面出现了问题.就是密码框的位置,没传值.但是还莫名其妙的显示了值.如图:
这是期望的效果:
火狐下的效果是:
部分jsp代码是:
Java代码
:
<input type="text" id="admi_name"
name="admi_name" value="${adminBean.admi_name}" />
<fmt:message
key="shop.member.password.title">:
<input type="password" id="admi_password"
class="{rangelength:[6,8]}" name="admi_password" />
<fmt:message
key="shop.member.password.confirm.title">:
<input type="password"
name="admi_password_confirm"
class="{equalTo:'#admi_password'}" />
并且保证不是js的问题.
经过测试.其他浏览器没有问题.发现火狐下别的页面也没有问题.就这个页面有问题.所以我就坚信是jsp页面的问题.经过百般的测试,发现了一点线索.就是当密码框上面的管理员姓名为空时,是不会有问题的,只有管理员姓名有值时,才会将紧挨着他的下一个密码框赋值.
我思想向后不明所以.很明显,后台框架是影响不到前台的.jsp里面的js我也都删除过.但是还是有这种问题.当我最终打算放弃,打算在iteye上逛一会的时候.在我登录iteye的时候(我这回是用的firefox,我正常情况下,不测试是不用firefox的,一般都是chrome.因为今天一直在用firefox测试,顺手就用了.)输入完密码点登录的时候,火狐弹出了提示框:是否记住密码?
当我看到这几个字眼的时候,灵光一闪.我上面的问题.是不是firefox的自动保存密码功能搞的鬼那?经过测试.发现确实是这个可恶的东东搞的鬼(说可恶,有点不合适,毕竟保存密码这个功能还是很方便的).
解决方案:
我刚发现这个问题的原因的时候,感觉没有一举两得的好办法,既想用密码保存功能,又想指定的字段不要自动填充密码.我半信半疑的打开"网页制作完全手册"查看input type=password 的属性.找了半天没发现和这个问题有关的属性.最后抱着试一试的态度,给管理员姓名字段加上的:autocomplete=off属性,就是关闭了它的自动提示功能.没想到奇迹就这么发生了!.
特此将这种怪异的问题记录下来,希望其他的同学别再为这个问题痛疼.!
我在登陆页面尝试该方式,将用户名那个input增加autocomplete=off属性,虽然记住了密码,但是不自动填充,当填写完用户名后,密码自动被填充。
但是我的修改页面没有用户名输入框,也没有最邻近的输入框,类似如下图片
当然很明显,我给密码框增加autocomplete=off属性就可以啦。