我知道它在SO上已被多次回答,但这适用于旧版本的Chrome。
我有Chrome版本53.0.2785.143。
我想禁用Chrome以自动填充密码字段
我已经尝试了旧的SO答案中提到的所有方法,
方法1:
尝试使用假用户名密码。
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
方法2:
尝试使用autocomplete='new-password'
和autocomplete='false'
以及autocomplete='off'
但它都不起作用。
答案 0 :(得分:15)
试试这个 display:none
<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />
您也可以使用jQuery
来解决这个问题,希望这对您有所帮助,如果没有请在这里发表评论,祝您好运:)
<强>更新强>
这取决于chrome版本,有时这对于chrome新版本不起作用,所以你应该尝试很多东西来防止这个问题,也请尝试这些代码片段并请发表评论发生了什么:)
解决方案2
$('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);
});
它从元素中删除“name”和“id”属性,并在1ms后将其分配回来。把它放在文档准备好了。
解决方案3
<input type="text" name="email">
<input type="password" name="password" autocomplete="new-password">
经过测试并可在Chrome 53中使用
解决方案4
尝试autocomplete="false"
而不是autocomplete="off"
或nofill
答案 1 :(得分:3)
我也遇到了这个问题,截至2020年5月22日,我找不到使我的Web应用程序避免填写密码字段的方法,因此我找到了一种替代方法,这里是:< / p>
在用户输入密码的输入字段上,将其类型更改为文本,这样可以避免弹出所有已保存的密码以供应用程序弹出,然后通过添加以下内容使输入看起来像常规密码输入:
style="text-security:disc; -webkit-text-security:disc;"
这就像更改一样简单:
<input type="password">
收件人:
<input type="text" style="text-security:disc; -webkit-text-security:disc;">
甚至更多,您可以省略type属性:
<input style="text-security:disc; -webkit-text-security:disc;">
干杯!
如评论中所指出,此解决方案不适用于Firefox,请参阅https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-text-security,尽管最初的问题仅要求在Chrome上找到解决方案,但我找到了一个新的解决方案(不确定是否对所有人有用) ):我创建了仅由磁盘组成的字体(模拟密码字段),并且似乎可以正常工作,请注意,我不是创建字体的专家,我已尽力而为。我没有仔细测试过该解决方案,但是乍一看似乎可以完成这项工作。链接到我使用Font Forge创建的字体:https://drive.google.com/file/d/1xWGciDI-cQVxDP_H8s7OfdJt44ukBWQl/view?usp=sharing
请对此进行测试,让我知道它是否可以唤醒。
将ttf文件放在创建html文件的目录中
<!DOCTYPE html>
<html>
<head>
<title>Font Test</title>
</head>
<body>
<span>Custom font</span><input class="disk-font" type="text"/>
<span>Normal Font</span><input type="password"/>
</body>
<style>
@font-face {
font-family: disks;
src: url(disks.ttf);
}
.disk-font{
font-family: disks;
}
</style>
</html>
答案 2 :(得分:2)
如果您要求用户在注册或密码更新期间键入两次密码,请在这两个字段中添加新密码自动填充属性。
<input type="text" autocomplete="username">
<input type="password" autocomplete="current-password">
答案 3 :(得分:1)
在管理员想要更改用户的电子邮件/密码的情况下,自动填充会使用管理员和填写的管理员密码替换用户的电子邮件。
对我来说有用的是将字段(电子邮件,密码...)设置为禁用,并在加载页面后一秒钟启用tiemout。以这种方式,在浏览器自动填充忽略它们之后,用户可以使用它们。
风险在于某些东西会破坏js并且它们仍然不可用。
如果你的服务器部分不太依赖于输入名称,我建议只是将它们更改为与登录表单中使用的不同 - 它们不会自动填充(除非你特别要求) 。
否则这是示例代码:
<input id="email" type="email" name="email" value="email@example.com" disabled>
<input id="password" type="password" name="password" disabled>
<script>
$(document).ready(function(){
setTimeout(
function(){
$('#myform input[diabled]').removeAttr('disabled');
}, 1000);
);
</script>
答案 4 :(得分:1)
如果输入type="password"
,Chrome只会自动填写密码 - 否则会冒明确的方式泄露用户密码。因此,在输入字段上使用type="text"
,然后在用户关注输入时将type属性更改为"password"
。
密码字段:
<input type="text" class="form-control" placeholder="Password"
onfocus="this.setAttribute('type', 'password')" />
完整示例: (使用Bootstrap 3类和Font Awesome图标)
<form>
<div class="form-group">
<input type="text" class="form-control" placeholder="Email Address" />
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Password"
onfocus="this.setAttribute('type', 'password')" />
</div>
<div class="text-xs-center">
<button type="submit" class="btn btn-primary" style="width: 100%;">
<i class="fa fa-lock" style="padding-right: 10px;"></i> LOG IN
</button>
</div>
</form>
答案 5 :(得分:1)
停止使用“用户”一词来命名该字段,例如,如果您将“用户操作”更改为“ u-动作”,则Google将停止向该字段提供电子邮件或用户名。
答案 6 :(得分:1)
在 Chrome 87 中,为了防止 Chrome 自动填充,三种方法的结合几乎完全解决了问题
添加 autocomplete='chrome-off'
到输入标签和表单标签。对于 Rails 的表单助手,我需要使用 JS 来setAttribute('autocomplete', 'chrome-off')
after 页面加载
如果某些自动完成/自动填充功能仍然存在(多次填写相同的表单以进行检查),请将前缀 _
添加到 name
属性。就我而言,它是 <input name='user[_country]'
对于英语以外的语言环境,仍然存在一些自动填充的剩余部分。在 name
属性中添加另一个下划线有助于它,即 <input ... name='user[_c_ountr_y]'
编辑:
答案 7 :(得分:0)
一个可能的解决方案是将输入类型初始设置为“text”,然后为输入添加一个事件侦听器,在编辑字段后将类型更新为“password”。这将允许您保留密码输入的所有功能,并希望绕过任何密码自动填充/管理器。类似的东西:
HTML
<input type='text' class='my-input' />
JS
const input = document.querySelector('.my-input');
input.addEventListener('keydown', () => {
input.setAttribute('type', 'password');
});
答案 8 :(得分:0)
使用jQuery disableAutoFill插件
$('#login-form').disableAutoFill();
答案 9 :(得分:0)
截至2019年2月22日,对于我来说,我尝试了这些但没有有效的解决方案。
我尝试使用from keras.layers import Layer, Input
from keras import backend as K
from keras import Model
import tensorflow as tf
class SumationLayer(Layer):
def __init__(self, **kwargs):
super(SumationLayer, self).__init__(**kwargs)
def build(self, input_shape):
# Create a trainable weight variable for this layer.
self.kernel = self.add_weight(name='kernel',
shape=(input_shape[1], input_shape[2]),
initializer='uniform',
trainable=True)
super(SumationLayer, self).build(input_shape) # Be sure to call this somewhere!
def call(self, x):
return x + self.kernel
def compute_output_shape(self, input_shape):
return (input_shape[0], input_shape[1], input_shape[2])
input = Input(shape = (10,10))
output = SumationLayer()(input)
model = Model(inputs = [input], outputs = [output])
model.summary()
,visibility
,display
,但似乎无法正常工作。使用Material UI时可能会丢失一些东西。
对我来说,我有两种解决方案。 这是JSX代码,您可以将相同的属性与本机html CSS语法一起使用
1)具有不透明度和位置
autocomplete
2)具有z-index和位置
<input type="email" style={{opacity:"0", position:"absolute"}}/>
<input type="password" style={{opacity:"0", position:"absolute"}}/>
希望这可以节省某人的时间。
答案 10 :(得分:0)
根据Mozilla文档, 在大多数现代浏览器中,将自动完成功能设置为“关”不会阻止密码管理器询问用户是否要保存用户名和密码信息,或自动在网站的登录表单中填写这些值。
您必须使用
autocomplete = "new-password"
在创建新帐户或更改密码时,应将其用于“输入新密码”或“确认新密码”字段,而不是通常出现的“输入当前密码”字段。浏览器可以使用它来避免意外填充现有密码,并在创建安全密码时提供帮助
您可以查看所有自动完成值here,以供参考和更好地理解。
答案 11 :(得分:0)
直到我用表单将输入内容包装好之后,我才获得成功
答案 12 :(得分:-1)
我终于使用带有事件处理程序的textarea
取得了成功,该事件处理程序替换了用“•”键入的每个字符。
答案 13 :(得分:-1)
只需将默认值设置为空白, 并清除Window的就绪事件上的密码值
<input value=" " type="text" name="fakeusernameremembered"/>
<input value=" " type="password" name="fakepasswordremembered"/>
答案 14 :(得分:-3)
遗憾的是没有什么对我有用(win10,opera / chomium)没有“新密码”,没有其他解决方案......内联样式也有问题,当它被隐藏时,自动完成进展
这是我的工作解决方案:我们需要两个type = password并首先通过外部css隐藏
<input type="password" class="vapor zero">
<input
id="hes"
type="password"
placeholder="actual password"
autocomplete="off"
autocomplete="false"
autocorrect="off"
name="password2"
value=""
autocomplete="new-password"
required>
的CSS:
.zero{
width:0px !important;
height:0px !important;
padding:0 !important;
border:1px solid white;
}
jquery杀手(只是肯定):
$(".vapor").fadeOut(5400, function() {
$(this).remove();
});
答案 15 :(得分:-7)
你可以尝试这种方式。
关闭自动填充 如果您不希望每次填写表单时都看到保存的个人信息,则可以关闭自动填充。
打开Chrome。 在右上角,点击更多,然后点击设置。
点击底部,点击显示高级设置。
&#34; 密码和表单,&#34;取消选中&#34; 启用自动填充,只需点击一下即可填写网络表单。&#34; 要重新打开自动填充功能,请再次选中该复选框。