ASP.NET 部分回发上的 Chrome 自动填充(更新面板)
Posted
技术标签:
【中文标题】ASP.NET 部分回发上的 Chrome 自动填充(更新面板)【英文标题】:Chrome Autofill on ASP.NET Partial Postback (Update Panel) 【发布时间】:2019-02-27 17:10:13 【问题描述】:我知道有很多关于网络浏览器的自动完成和自动填充的问题和答案。我还没有看到有人提出过这个具体问题。
更新:当部分回发在更新面板内执行时,自动填充特别发生
最近,(Chrome 版本 70+?),Chrome 已开始在执行部分回发时积极地自动填充我们的 web 应用程序中的输入字段。 (我们使用 asp.net 网络表单)
我们使用部分回发来动态加载用户控件并将其添加到更新面板内的 DOM 中。
具体来说,像以下简单的 sn-p 这样的输入正在填充电子邮件:
<input type="search" class="newH4" placeholder="Search">
我尝试添加具有不同值的自动完成属性无济于事。
这是自动填充的截图:
此外,我还有其他字段,例如输入与电子邮件一起填充的美元金额。有没有办法在最新版本的 chrome 上防止这种情况发生?
【问题讨论】:
【参考方案1】:如果您的表单中有密码字段,您可以添加此属性 -
autocomplete="new-password"
<input type="password" placeholder="Password" autocomplete="new-password">
【讨论】:
【参考方案2】:autocomplete="off"
应该可以正常工作,但如果它不是密码或电子邮件,你可以给它一些随机字符串,看看是否有帮助
例如autocomplete="rjftgh"
【讨论】:
【参考方案3】:注意:简单地将自动完成属性更改为随机字符串,甚至像“新密码”这样的特殊字符串都不适用于此问题。
最终我找到了解决方案。它更像是一种 hack,所以我对它不太满意,但它来自 Mike Nelson 对以下问题的回答:Disabling Chrome Autofill
他的解决方案包括在自动填充的输入上方添加显示属性设置为“无”的输入元素。这个想法是这些隐藏字段吸收自动填充。
我也确实了解了更多关于 ASP.NET 和更新面板的问题。当更新面板触发部分回发时,它使用 AJAX 库。库与服务器联系以完成更新。 无论 AJAX 在后台做什么,它都会触发 chrome 的自动填充逻辑重新执行。 换句话说,每当我动态添加用户控件时,该用户控件的 html 结构中的第一个输入字段都会被自动填充与用户存储的电子邮件。
同样,非常奇怪和糟糕的行为,但显示“无”输入字段起到了作用。
如果 Chrome 再次更改其自动填充逻辑(他们会),我将更新我的答案,希望有更好的解决方案。
【讨论】:
以上是关于ASP.NET 部分回发上的 Chrome 自动填充(更新面板)的主要内容,如果未能解决你的问题,请参考以下文章