如果我们具有在应用程序中创建的登录和密码字段的组件,则在我们通过Router Firefox导航到其他组件之后,请要求保存密码。回答"否"无济于事,因为当我们在页面之间导航时,通知一次又一次出现。
但是,如果我们没有使用登录和密码字段创建组件(没有使用此组件打开URL),则导航不会调用通知。
似乎是,带有登录和密码的形式出现在DOM中,并且同时消失了,因此Firefox认为我们已成功登录。
但这没有任何意义,因为我们离开页面后,零件被破坏了。
Chrome没有此类问题,因此尚不清楚它是Angular Bug还是Firefox Bug。
预期的行为是Firefox应该要求仅保存密码一次,而不是在页面之间的每个导航。
plunker与演示http://embed.plnkr.co/sucx1zjmfvxmei4ajz41/
- 导航到第1页
- 之后导航到密码
- 之后再次导航到第1页。通知将出现。
- 回答"否"并导航到第2页。通知将再次出现。
之后,请尝试同一示例,但没有使用登录和密码创建表单
- 重新加载plunker(可能需要重新加载所有页面)
- 导航到第1页
- 导航到第2页
- 直到我们导航到密码页面才会出现通知。
有人遇到过这种行为并知道如何解决吗?通知非常烦人。
UPD 18.04.2018:以前我们注意到,问题仅在JIT汇编中出现。对于生产和AOT构建,一切都可以正常工作 - 显示了密码保存建议的提示。因此,某处存在问题,但这仅对开发人员而烦人。
几天前,我们将Angular升级到版本5.2.10,Nodejs升级到8.11.1版(我们以前使用了7.10)。之后,问题也出现在生产模式下。
仍然没有解决方案或清晰的原因。
我不知道这是否会有所帮助。当我的密码元素未包含在<form>
元素中时,我在使用vue.js时注意到了这个问题。要补救,我将登录字段围绕着<form>
元素,我在该字段上为submit
事件设置了preventDefault
指令。在vue.js中看起来像这样:
<form v-on:submit.prevent>
Username: <input v-model="username" />
Password: <input type="password" v-model="password" />
</form>
我应该提交提交表格时仍会要求您保存密码,但是随后的导航不再提示。
我刚刚在React中遇到了相同的问题。
原因是我的登录表单不是<form>
,而是简单的<div>
。我将其设置回<form>
,Firefox停止要求在每个async呼叫上保存凭据。
我不知道确切的原因,Chrome一直都很好
是的,该工作。将字段包装到form
标签中是一个很好的简单想法。我以前没有尝试过。
,Firefox以这样的方式做的似乎很容易。实际上,输入应始终是内部形式,因为在常规应用中,不可能在没有表格的情况下发送数据。还将输入放置在form
内部解决问题中,并在Chrome中自动检查自动填充表格。因此,以下标准是避免意外错误的最佳方法。