【问题标题】:Form password field in iframe behave as if empty when filled automatically by Chrome由 Chrome 自动填充时,iframe 中的表单密码字段表现为空
【发布时间】:2017-02-11 10:39:05
【问题描述】:

当 Google chrome 使用保存的凭据信息自动填充密码字段并且我提交表单时,密码数据是一个空字符串。

因此,我收到“必填字段”的错误,即使该字段中有内容。

我正在使用 django-allauth,但我做了一些测试,当我使用基本的 django 表单时,问题似乎也发生了。

知道什么可能导致问题吗?最终,我可以尝试停用该字段的自动填充功能,但我宁愿不这样做。

请注意,它在 firefox 上的行为正常,它不会在页面加载时填充该字段,但只有当用户在自动完成下拉菜单中选择他的用户名时才会填充该字段。

编辑 - 更多信息:我发现这与我在 iframe 中的表单相关联。当我直接在主页上显示它时,不会发生此问题。我仍然需要让它在 iframe 中工作......

EDIT2:经过一些研究,这似乎是一个错误,chrome 没有在动态添加的 iframe 上发送正确的事件:

https://bugs.chromium.org/p/chromium/issues/detail?id=669045

https://codereview.chromium.org/2603623002

我正在努力寻找解决方法....

【问题讨论】:

    标签: django forms google-chrome django-allauth


    【解决方案1】:

    在加载页面上使用 javascript 来设置 input = innerhtml 的值。

    例如转到 facebook.com 并打开控制台并写入:

    document.getElementsByTagName('input')[1].value
    


    您需要将电子邮件输入值设置为

    document.getElementsByTagName('input')[1].value
    

    【讨论】:

    • 你能说得更准确一点吗? innerhtml 是什么?
    • 例如转到 facebook.com 并打开控制台并写入:document.getElementsByTagName('input')[1].value
    • 您将需要设置电子邮件输入的值 = document.getElementsByTagName('input')[1].value
    • 我刚试了一下,但是innerHtml也是一个空字符串。 (注意:它的值也是一个空字符串)
    • 我编辑了我的问题。我发现只有当我的表单位于 iframe 中时才会发生这种情况。不在主页上时。但是,我仍然需要它在 iframe 中工作......
    猜你喜欢
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多