我目前正在开发 Angular
Web 应用程序。
该应用程序由两个单页应用程序组成:
- 登录页面
,可通过“domain/login.html”访问,包含登录逻辑。
- Application-Page
,可通过“domain/”访问,包含具体应用程序。
如果您尝试访问“domain/”,如果您尚未登录,服务器会将您重定向到“domain/login.html”。否则,您将获得Application-Page
(无重定向)。
在具体的应用程序中,有一个Change-Password-Page
,您必须在其中输入旧密码和新密码(两次)。
如果您在登录页面上说“保存密码”,问题就会开始。保存的密码会自动填充到“旧密码”字段中。
还有另一个页面,其中一个文本字段和一个密码字段紧接在一起(其中文本字段用于电话号码),浏览器将用户名插入“电话号码”字段中,并将密码插入密码字段中。这真的很奇怪,因为这些字段有不同的名称和 ID,甚至位于另一页上(同样一个是“/login.html”,一个是“/”)
由于这种行为是不正确的,我真的很想禁用它。但直到现在我还无法做到这一点。
我尝试过的:
- autocomplete=off,用于表单和输入标签。大多数现代浏览器似乎都忽略了这一点。
- 第一个位置有两个隐藏(显示:无)输入字段(文本+密码)。似乎适用于 Firefox,但 Chrome 和 Opera 仍然可以让您自动完成字段。
- 使用 type="text"作为密码字段,并将其更改为 javascript 代码中的密码。同样,Opera 和 Chrome 仍然提供自动完成这些值的可能性。
所以我正在寻找一个(干净的)解决方案来关闭错误的自动完成功能。 这有可能吗?
最佳答案
我最近遇到了这个问题,特别是在 Chrome 上。看来是这样的
autocomplete="off" || autocomplete="false"
Chrome(或据我所知大多数其他浏览器)不再使用它。我发现以下来源很有帮助:
Chromium(我相信这是许多 Chrome 的基础)具有以下代码,显示了在查找要使用 Chrome 的自动完成功能填充的字段时使用的正则表达式:
我觉得他们唯一发现的其他解决办法就是遵循这些约定: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
或者至少确保您提供的属性与上面的列表足够不同,这样它就不会被自动完成功能选中。
关于javascript - HTML 禁用错误的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343487/