ASP.NET部分回发上的Chrome自动填充(更新面板)

时间:2019-02-27 17:10:13

标签: javascript html asp.net google-chrome autofill

我了解网络浏览器的自动填充和自动填充有很多问题和答案。我还没有看到这个特定的问题。

更新:自动填充专门在更新面板中执行部分回发时发生

最近,(Chrome版本70或更高版本?),Chrome已开始在执行部分回发后自动在我们的Web应用程序中自动填充输入字段。 (我们使用asp.net网络表单)

我们使用部分回发来动态加载用户控件,并将其添加到更新面板中的DOM中。

具体来说,将使用电子邮件填充以下简单代码段之类的输入:

<input type="search" class="newH4" placeholder="Search">

我尝试添加具有不同值的autocomplete属性,但无济于事。

这是自动填充的屏幕截图:

enter image description here

此外,我还有其他字段,例如输入美元数量,该数量也随电子邮件一起填充。有没有办法在最新版本的chrome上防止这种情况发生?

3 个答案:

答案 0 :(得分:1)

如果您的表单中有一个密码字段,则可以添加此属性- autocomplete="new-password"

<input type="password" placeholder="Password" autocomplete="new-password">

答案 1 :(得分:0)

autocomplete="off"应该可以正常工作,但是可以代替它正常工作,并且鉴于它不是密码或电子邮件,您可以向其输入一些随机字符串以查看是否有帮助

例如autocomplete="rjftgh"

答案 2 :(得分:0)

注意:简单地将autocomplete属性更改为随机字符串,甚至是诸如“ new-password”之类的特殊字符都无法解决此问题。

最终我找到了解决方案。它更像是一种骇客,所以我对此不太满意,但这来自迈克·尼尔森(Mike Nelson)对以下问题的回答:Disabling Chrome Autofill

他的解决方案包括在自动填充的输入上方添加其显示属性设置为“ none”的输入元素。这个想法是这些隐藏字段代替吸收自动填充。

我也确实了解了有关ASP.NET和更新面板问题的更多信息。当更新面板触发部分回发时,它将使用AJAX库。库与服务器联系以完成更新。 无论AJAX在后台执行什么操作,都将触发chrome的自动填充逻辑重新执行。换句话说,每当我动态添加用户控件时,该用户控件的html结构中的第一个输入字段就会被自动填充与用户存储的电子邮件一起使用。

同样,非常奇怪和不良的行为,但是显示“无”输入字段可以解决问题。

如果Chrome再次更改了自动填充逻辑(他们会这样做),我将用更好的解决方案来更新答案。