停止Google Chrome自动填充输入

时间:2013-08-30 11:08:20

标签: html google-chrome

我有一个input type text用户更改他们的电子邮件& 帐户设置页中的密码

如何阻止 Chrome 自动填充输入。

Chrome 请记住登录页面中的input data,并自动填写帐户设置页。

Chrome 会自动填写input 更改我的电子邮件& 帐户设置页面

中的密码

13 个答案:

答案 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"/>

...

Read more

解决方案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)似乎再次改变了行为。这一次,自动填充与autocompletereadonly或此处建议的其他变通方法无关(以及这些错误报告https://code.google.com/p/chromium/issues/detail?id=468153https://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现在忽略了自动完成开启和关闭。我曾经使用过较旧的修复程序(例如伪造的隐藏密码字段 - 这些字段也不再起作用)。根据生活标准规范 - 您需要使用自动填充令牌。您必须在适当的用例上下文中使用它们。希望这有用。

https://html.spec.whatwg.org/multipage/forms.html#autofilling-form-controls:-the-autocomplete-attribute

答案 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位)

上测试