如何在ASP.NET Web Form中禁用Chrome浏览器的表单自动填充?
在ASP.NET Web Form中禁用Chrome表单自动填充的有效方案
Chrome新版本会忽略常规的 autocomplete="off"/disable/none 属性,以下是经过验证的可行方案:
方案1:利用autocomplete="new-password"属性
Chrome会跳过标记为new-password的字段自动填充,即使是普通文本框也适用:
- 前端标记直接设置:
<asp:TextBox ID="txtUsername" runat="server" autocomplete="new-password"></asp:TextBox> <asp:TextBox ID="txtPassword" runat="server" TextMode="Password" autocomplete="new-password"></asp:TextBox> - 后台代码动态添加:
txtUsername.Attributes.Add("autocomplete", "new-password"); txtPassword.Attributes.Add("autocomplete", "new-password");
方案2:readonly属性结合聚焦触发
Chrome不会填充设为readonly的字段,可通过聚焦时移除readonly实现正常输入:
- 普通文本框:
<asp:TextBox ID="txtEmail" runat="server" readonly="readonly" onfocus="this.removeAttribute('readonly');"></asp:TextBox> - 密码框(初始设为text类型避免预填充):
<asp:TextBox ID="txtPassword" runat="server" type="text" readonly="readonly" onfocus="this.type='password'; this.removeAttribute('readonly');"></asp:TextBox>
方案3:自定义随机autocomplete值
设置Chrome无法识别的自定义属性值,使其跳过自动填充:
<asp:TextBox ID="txtUser" runat="server" autocomplete="custom-no-autofill-987"></asp:TextBox>
或后台添加:
txtUser.Attributes.Add("autocomplete", Guid.NewGuid().ToString());
方案4:隐藏假字段"欺骗"Chrome
在表单最前端添加隐藏的用户名/密码字段,让Chrome优先填充这些假字段,实际输入框就不会被填充:
<form id="form1" runat="server"> <!-- 隐藏的假字段 --> <input type="text" style="display: none !important;" name="fake-username" autocomplete="username" /> <input type="password" style="display: none !important;" name="fake-password" autocomplete="password" /> <!-- 实际业务输入框 --> <asp:TextBox ID="txtRealUsername" runat="server"></asp:TextBox> <asp:TextBox ID="txtRealPassword" runat="server" TextMode="Password"></asp:TextBox> </form>
内容的提问来源于stack exchange,提问作者Attiq Arain
相关产品推荐
相关产品推荐

