Html 浏览器如何决定在每个输入上使用哪些数据进行自动填充?

Html 浏览器如何决定在每个输入上使用哪些数据进行自动填充?,html,autofill,Html,Autofill,我见过其他问题问自动填充如何工作,但答案都解释了如何使其工作,这不是我想要的。我想阻止它工作。我也意识到有很多问题在问这个特定的问题,但答案总是设置autocomplete=off,我们都知道这是无用的,因为浏览器不尊重它 除此之外,我的问题有点不同,因为我真正想问的是浏览器如何决定用什么数据填充哪些输入,因为我希望通过这些知识可以防止我遇到的问题 具体来说,我遇到的问题是,每次打开“更改密码”页面时,我的搜索输入都会自动填入用户名。我试图理解它为什么这样做,这样我就能阻止它 我的输入没有名称、

我见过其他问题问自动填充如何工作,但答案都解释了如何使其工作,这不是我想要的。我想阻止它工作。我也意识到有很多问题在问这个特定的问题,但答案总是设置autocomplete=off,我们都知道这是无用的,因为浏览器不尊重它

除此之外,我的问题有点不同,因为我真正想问的是浏览器如何决定用什么数据填充哪些输入,因为我希望通过这些知识可以防止我遇到的问题

具体来说,我遇到的问题是,每次打开“更改密码”页面时,我的搜索输入都会自动填入用户名。我试图理解它为什么这样做,这样我就能阻止它

我的输入没有名称、标签或自动完成属性。它只是非常简单,如图所示。那么,在什么样的世界中,浏览器找到id为“searchinput”的字段并认为自动填充用户名是有意义的呢

<input type=text id=searchinput placeholder='Search'>

另外,在“更改密码”页面上,两个密码字段中的第一个字段会自动填充(可能是匹配的密码,但我看不到,因为它都是圆)。那么,为什么这些浏览器会用用户名自动填充我的搜索输入,我该如何防止呢


进一步解释一下我的代码在做什么:当用户从菜单中选择“更改密码”时,我将更改密码页面加载到现有页面上的一个div(使用jquery load)中,并将其向下滑动以覆盖大部分浏览器窗口(减去标题和菜单),这意味着他们当前所在的页面仍然在下面,这也是为什么我的搜索输入仍然可见的原因。在我的特殊情况下,输入字段自动填充用户名的原因是因为Chrome自动填充它找到的第一个密码字段(并且你不能停止它),然后,无论DOM中密码字段前面的输入字段是什么,都会自动用用户名填充,而不管该字段的名称、id或用途是什么。在我的例子中,这是搜索输入

所以为了解决这个问题,我必须在新密码输入之前创建另一个输入,并用绝对定位将其隐藏在视线之外,这样Chrome将填充这个无用的字段,而不是我的搜索输入。唉

<input type=text style='width:0px;position:absolute;right:-100px'>

我还添加了一个“看不见”的密码字段,这样Chrome将自动填充该字段,而不是我表单中的第一个密码字段

<input type=password style='width:0px;position:absolute;right:-100px'>

在我的特殊情况下,输入字段自动填充用户名的原因是,Chrome会自动填充它找到的第一个密码字段(并且您无法阻止它),然后还会自动填充用户名,无论DOM中密码字段之前的输入字段是什么,无论名称、id、,或者该领域的目的可能是。在我的例子中,这是搜索输入

所以为了解决这个问题,我必须在新密码输入之前创建另一个输入,并用绝对定位将其隐藏在视线之外,这样Chrome将填充这个无用的字段,而不是我的搜索输入。唉

<input type=text style='width:0px;position:absolute;right:-100px'>

我还添加了一个“看不见”的密码字段,这样Chrome将自动填充该字段,而不是我表单中的第一个密码字段

<input type=password style='width:0px;position:absolute;right:-100px'>


我认为没有规范,每个浏览器都有自己的启发式算法,程序员经常在新版本中更新它们。我不认为有规范,每个浏览器都有自己的启发式算法,程序员经常在新版本中更新它们。