我有一个input type text
用户更改他们的电子邮件& 帐户设置页中的密码。
如何阻止 Chrome 自动填充输入。
Chrome 请记住登录页面中的input data
,并自动填写帐户设置页。
Chrome 会自动填写input
更改我的电子邮件& 帐户设置页面
答案 0 :(得分:57)
我们不再依赖黑客。您可以将自动完成设置为新密码,它将按预期工作。
<input type="password" name="pwd" autocomplete="new-password">
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete
答案 1 :(得分:30)
您是否明确将值设置为空白?例如:
<input type="text" name="textfield" value="">
这应该会阻止浏览器将数据放在不应该的位置。或者,您可以将自动填充属性添加到表单标记:
<form autocomplete="off" ...></form>
答案 2 :(得分:18)
解决方案1:
将2行代码置于<form ..>
标记下可以解决问题。
<form id="form1" runat="server" >
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
...
解决方案2:它会从元素中删除“name”和“id”属性,并在1ms后将其分配回来。把它放在文档准备好了。
$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {
var input = this;
var name = $(input).attr('name');
var id = $(input).attr('id');
$(input).removeAttr('name');
$(input).removeAttr('id');
setTimeout(function () {
$(input).attr('name', name);
$(input).attr('id', id);
}, 1);
});
解决方案3:在Chrome 60.0.3112.101中进行了测试
<input type="password" name="pwd" autocomplete="new-password">
答案 3 :(得分:10)
从版本55.0.2883.87 m开始,此问题仍然存在。 (在Windows 10上)
在表单上设置自动填充属性的解决方案
或添加虚假输入字段并在提交之前删除name属性不再有效,因为Chrome会在删除时忽略或立即自动完成它们。
让它当前按预期工作的唯一方法是将autocomplete属性设置为“new-password”
<input type="text" name="text" autocomplete="new-password">
即使是非密码类型输入。
答案 4 :(得分:4)
Chrome的最新版本(46.0.2490.86)似乎再次改变了行为。这一次,自动填充与autocomplete
或readonly
或此处建议的其他变通方法无关(以及这些错误报告https://code.google.com/p/chromium/issues/detail?id=468153,https://bugs.chromium.org/p/chromium/issues/detail?id=587466)
相反,AutoFill现在会查看输入框旁边的标签,并根据该标签生成自动填充(以及ID和名称)。一个很大的线索是AutoFill如何实际填充多个领域(例如街道,郊区和州)。它似乎使用了几种技术(标签,名称,id)来辨别字段之间的空间关系。
因此,解决方法是将垃圾文本插入隐藏范围内的标签...
S<span style="display:none">_</span>uburb:
...并且还混淆/删除了id和名称。这是我唯一阻止郊区自动填充的东西。
答案 5 :(得分:3)
很遗憾autocomplete="off"
对我不起作用(不再)了。所以这是我的解决方案:
首先阅读然后删除&#34; name
&#34;和&#34; id
&#34;来自元素的属性。然后,在1ms之后,再次使用之前读取的值设置这些属性。对我来说它有效:)
<form autocomplete="off"><br />
<input type="text" name="username" id="username" /><br />
<input type="password" name="password" id="password" /><br />
</form>
<pre>
$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function(){
var input = this;
var name = $(input).attr('name');
var id = $(input).attr('id');
$(input).removeAttr('name');
$(input).removeAttr('id');
setTimeout(function(){
$(input).attr('name', name);
$(input).attr('id', id);
}, 1);
});
</pre>
答案 6 :(得分:2)
Chrome会忽略autocomplete =“nothing”和隐藏字段。 HTML / CSS解决方法是在真实密码字段之前使用绝对定位的密码字段:
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
编辑:
如其他重复问题中的其他多个答案所述,到目前为止最优雅的工作解决方案是:
SELECT
ID
FROM
#table t1
WHERE
EXISTS ( SELECT
*
FROM
#table t2
WHERE
t2.ID = @Port1
AND t2.Code = t1.Code
AND t2.Life = t1.Life
AND t2.TC = t1.TC )
答案 7 :(得分:2)
几乎跳出窗户试图解决这个问题......似乎Google现在忽略了自动完成开启和关闭。我曾经使用过较旧的修复程序(例如伪造的隐藏密码字段 - 这些字段也不再起作用)。根据生活标准规范 - 您需要使用自动填充令牌。您必须在适当的用例上下文中使用它们。希望这有用。
答案 8 :(得分:1)
我有类似的问题。在所有尝试失败后。我试过这个设置
的黑客type = "search"
而不是文字。即使它不是一个漂亮的黑客。在大多数情况下,它不会导致任何问题。类型搜索与截至目前的文本没有什么不同。
答案 9 :(得分:1)
通过设置autocomplete =&#34; new-password&#34; , 有用。 在测试之前,先清除浏览数据
答案 10 :(得分:1)
尝试隐藏密码元素
<form>
<input type="text" name="fakeusername" class="fake-autofill-fields"/>
<input type="password" name="fakepassword" class="fake-autofill-fields"/>
...
...
</form>
<script>
$(document).ready(function () {
$(".fake-autofill-fields").show();
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
}, 1);
});
</script>
答案 11 :(得分:0)
试试这个:
<div id="form_container">
<input type="text" name="username" autocomplete="off">
<input type="password" name="pwd" autocomplete="off">
<input tytep="submit" name="login" id="login" value="Log In">
</div>`
jquery代码:
jQuery("#login").click(function(){
jQuery("#form_container").wrap('<form method="post"></form>');
jQuery("form").submit();
});
如果您没有将输入字段包装到表单中,则Chrome的自动填充功能不会出现。
当您点击提交按钮时,只需填写表单周围的字段并在表单上触发submit()
。
答案 12 :(得分:0)
这有效:
<form autocomplete="off" ...></form>
在Chrome 56.0.2924.87(64位)
上测试