即使从页面中删除登录组件,Firefox也会要求输入密码

And*_*lov 5 firefox login plunker angular

如果我们在应用程序中创建了具有登录名和密码字段的组件,那么在我们通过路由器导航到其他组件之后,Firefox会要求密码保存.回答"否"没有帮助,因为当我们在页面之间导航时,通知会一次又一次出现.

但是如果我们没有使用登录名和密码字段创建组件(没有使用此组件打开URL),则导航不会调用通知.

好像,带有登录名和密码的表单出现在DOM中并在同一时刻消失,因此Firefox认为我们已成功登录.

但这没有任何意义,因为在我们离开页面输入后,组件被破坏了.

Chrome没有这样的问题,所以目前还不清楚它是Angular bug还是Firefox bug.

预期的行为是Firefox应该只询问一次保存密码,而不是每个页面之间的导航.

带有演示的Plunker http://embed.plnkr.co/SUcx1ZJMFVXMeI4aJZ41/

  1. 导航到第1页
  2. 之后导航到密码
  3. 然后再次导航到第1页.将出现通知.
  4. 回答"否"并导航到第2页.通知将再次出现.

之后尝试相同的示例,但不使用登录名和密码创建表单

  1. 重新加载plunker(可能需要重新加载所有页面)
  2. 导航到第1页
  3. 导航到第2页
  4. 在我们导航到密码页面之前,通知不会显示.

有没有人遇到过这种行为并知道如何解决它?通知非常烦人.

UPD 18.04.2018:之前我们注意到,问题只出现在JIT编译中.对于生产和AOT构建一切正常 - 没有显示密码保存提示的提示.所以在某个地方出现了问题,但它只对开发人员来说很烦人.

几天前,我们将Angular升级到版本5.2.10,将NodeJS升级到版本8.11.1(之前我们使用过7.10).之后问题也出现在生产模式中.

仍然没有解决方案或清楚是什么原因.

Mic*_*oka 2

我不知道这是否有帮助。当我的密码元素未包含在<form>元素中时,我在使用 Vue.js 时注意到了这个问题。为了补救,我用一个元素包围我的登录字段<form>,在该元素上设置事件preventDefault的指令submit。在 Vue.js 中看起来像这样:

<form v-on:submit.prevent>
Username: <input v-model="username" />
Password: <input type="password" v-model="password" />
</form>
Run Code Online (Sandbox Code Playgroud)

我应该提到的是,当您提交表单时,系统仍然会要求您保存密码,但后续导航不会再出现提示。