Google Chrome自动填充所有密码输入

我的问题

我必须打开谷歌自动填写我的网站登录,但它现在试图自动填充登录数据,每当我想编辑我的帐户信息或编辑另一个用户帐户信息(作为管理员)。 它在奇怪的地方填充我的数据。 问题似乎是,Chrome自动填充任何输入的密码类型,然后输入任何输入(见下图)。 如果我在它之前放置了一个选择框,那么它将不会自动填充。

Google通过登录信息自动填写注册信息

我显然不希望每次编辑用户时都要通过并删除密码/电话。 我也不希望我的用户在编辑自己的帐户时必须这样做。 我如何删除它?

我曾尝试过 (没有成功)

  • 将autocomplete =“off”添加到表单以及电话和密码输入。
  • 给两个输入增加值=“”
  • 更改密码输入的名称=。 我尝试了密码,密码和奶酪(因为chrome正在提取这个名字)
  • 通过jquery .attr添加autocomplete =“off”
  • 我发现的

    我发现Google可能会故意忽略自动填充:Google忽略自动填充

    我发现另一个用户发布了类似的问题,但该解决方案对我无效:禁用Chrome自动填充

    我还发现另一个用户正在做一个工作,涉及到创建一个隐藏的密码字段,这将需要谷歌自动完成,我宁愿更清洁的解决方案,因为在我的情况下,我也需要一个隐藏的输入,以避免自动填充:禁用自动填充在铬没有禁用自动完成


    有时候, 甚至autocomplete = off不会阻止将凭据填充到错误的字段中,但不会阻止用户或昵称字段。

    修复:浏览器通过只读模式自动填写并设置焦点可写

     <input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
    

    (焦点=在鼠标点击和通过字段标签)

    更新:Mobile Safari在该字段中设置光标,但不显示虚拟键盘。 新的修复工作像以前一样,但处理虚拟键盘:

    <input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
        this.removeAttribute('readonly');
        // fix for mobile safari to show virtual keyboard
        this.blur();    this.focus();  }" />
    

    现场演示https://jsfiddle.net/danielsuess/n0scguv6/ // UpdateEnd

    说明:浏览器自动将凭据填充到错误的文本字段?

    @Samir:Chrome自动填充任何使用某种类型密码的输入,然后填入任何输入

    有时我会注意到Chrome和Safari上的这种奇怪行为,当时有相同形式的密码字段。 我想,浏览器会查找一个密码字段来插入您保存的凭据。 然后它将用户名自动填充到最近的文本类型输入字段中,该字段出现在DOM中的密码字段之前 (只是由于观察而猜测)。 由于浏览器是最后一个实例,您无法控制它,

    这只读修复上面为我工作。


    在具有自动完成属性的HTML5中,有一个名为“new-password”的新属性,我们可以用它来解决这个问题。 以下为我工作。

    <input id="userPassword" type="password" autocomplete="new-password">
    

    当前密码:允许浏览器或密码管理器输入网站的当前密码。 这提供了比“on”更多的信息,因为它让浏览器或密码管理员知道在现场使用当前已知的网站密码,而不是新的密码。

    新密码:允许浏览器或密码管理器自动输入网站的新密码。 这可能会根据控件的其他属性自动生成,或者可能会简单地告诉浏览器呈现某种“推荐的新密码”小部件。

    请参阅:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/password


    这可以在没有黑客的情况下解决,但它不一定直观。 Chrome有两个奇怪的决定。 首先,Chrome会在其解析中忽略autocomplete="off" ,其次,Chrome会假定密码字段必须是用户名/电子邮件字段之前的字段,并且应该自动完成。

    有一些方法可以利用HTML5自动完成属性规范。

    正如您将在下面的链接中看到的那样,属性autocomplete有标准值。 为避免Chrome在密码为电子邮件字段之前假设该字段,请使用其中一个官方值(例如, tel为电话号码),或者填写列表中不存在的值,但也不是offfalse

    谷歌建议你使用new-的标准值之一,例如autocomplete="new-tel" 。 如果您想要密码字段不自动完成,则可以使用autocomplete="new-password"

    虽然在技术上你当然可以使属性随机而没有上下文来达到相同的效果(例如autocomplete="blahblahblah" ),但我建议使用new-前缀,因为它可以帮助任何未来的开发人员处理你的代码,用这个属性来完成。

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

    链接地址: http://www.djcxy.com/p/26497.html

    上一篇: Google chrome autofilling all password inputs

    下一篇: Writing a test for an authorize.net refund