autocomplete对current-password生效但对new-password无效的问题求助
autocomplete对current-password生效但对new-password无效的问题求助
大家好,我最近卡在一个密码自动补全的问题上,折腾了好一阵都没解决,想请各位大佬帮忙看看:
我想要实现的效果是,在修改密码时(就像Stack Exchange网站上那样),Safari能自动弹出「New Strong Password」的建议。根据MDN的说明,给新密码字段加上autocomplete="new-password"应该就能实现这个功能,但实际测试下来却没生效。
更奇怪的是,Stack Exchange的源码里相关属性甚至还有拼写错误,但它的新密码建议功能却正常工作。我把Stack Exchange的完整HTML复制到自己的Spring Boot + Thymeleaf项目里后,autocomplete="current-password"对应的当前密码字段自动补全是正常的,但新密码字段聚焦时,只显示灰色的钥匙图标——这说明浏览器识别出它是密码字段,但没把它当成「新密码」字段来处理。在Chrome里也是类似的情况,两个密码字段都被识别成普通密码字段,没有新密码建议。
我检查了浏览器控制台,没有任何报错信息。一开始以为是localhost环境的问题,但把页面部署到HTTPS服务器上后,问题依然存在。有意思的是,我把表单部分单独放到测试环境里时,功能却是正常的(能弹出新密码建议)。Stack Exchange页面加载了一些JavaScript,但我实在看不出哪部分会影响自动补全的逻辑。
下面是我复制的完整HTML代码:
<!DOCTYPE HTML> <html> <body> <div class=""> <div class="subheader"> <h1>Change Password</h1> </div> <div id="mainbar"> <div>Change password for glorfindel@example.com</div> <br> <form id="se-pw-reset" action="/account/password-reset" method="POST" class="d-flex fd-column gs12 gsy"> <input type="hidden" name="fkey" value=""> <input type="hidden" name="guid" value=""> <div class="d-flex fd-column gs4 gsy wmx3"> <div class="d-flex fd-column gs4 gsy js-auth-item "> <label class="flex--item s-label" for="currentpassword">Current password</label> <div class="d-flex ps-relative"> <input id="currentpassword" class="flex--item s-input" autocomplete="current-password" name="currentpassword" type="password" value=""> <svg aria-hidden="true" class="s-input-icon js-alert-icon d-none svg-icon iconAlertCircle" width="18" height="18" viewBox="0 0 18 18"><path d="M9 17c-4.36 0-8-3.64-8-8s3.64-8 8-8 8 3.64 8 8-3.64 8-8 8M8 4v6h2V4zm0 8v2h2v-2z"></path></svg> </div> <p class="s-input-message js-error-message d-none"> </p> </div> <div class="d-flex fd-column gs4 gsy js-auth-item "> <label class="flex--item s-label" for="password">New password</label> <div class="d-flex ps-relative"> <input id="password" class="flex--item s-input" autocomplete="new-password" name="password" type="password" value=""> <svg aria-hidden="true" class="s-input-icon js-alert-icon d-none svg-icon iconAlertCircle" width="18" height="18" viewBox="0 0 18 18"><path d="M9 17c-4.36 0-8-3.64-8-8s3.64-8 8-8 8 3.64 8 8-3.64 8-8 8M8 4v6h2V4zm0 8v2h2v-2z"></path></svg> </div> <p class="s-input-message js-error-message d-none"> </p> </div> <div class="d-flex fd-column gs4 gsy js-auth-item "> <label class="flex--item s-label" for="password2">New password (again)</label> <div class="d-flex ps-relative"> <input id="password2" class="flex--item s-input" autocomplete="new-password" name="password2" type="password" value=""> <svg aria-hidden="true" class="s-input-icon js-alert-icon d-none svg-icon iconAlertCircle" width="18" height="18" viewBox="0 0 18 18"><path d="M9 17c-4.36 0-8-3.64-8-8s3.64-8 8-8 8 3.64 8 8-3.64 8-8 8M8 4v6h2V4zm0 8v2h2v-2z"></path></svg> </div> <p class="s-input-message js-error-message d-none"> </p> </div> <p class="fs-caption fc-black-400 mt4 mb4"> Passwords must contain at least eight characters, including at least 1 letter and 1 number. </p> <div class="d-flex fd-column gs4 gsy js-auth-item "> <button class="flex--item s-btn s-btn__filled" id="submit-button" name="submit-button"> Change Password </button> <p class="s-input-message js-error-message d-none"> </p> </div> </div> </form> </div> </div> </body> </html>
内容来源于stack exchange
相关产品推荐
相关产品推荐

