我有一个单页应用程序,它不基于jquery之外的任何库。
应用程序使用
window.history.pushState()
使每个页面更改看起来像页面更改的命令,而实际上SPA所做的就是SPA的工作,并且仅在需要更改的页面中位实际上保留在同一页面上。
登录框本身包括一个
<input type="password" />
在我们访问服务器进行登录之前,使用$(element).remove()销毁了此元素的父对象。 (编辑:用户名和密码框未包含在表单中,并且我们不使用Submit,通过jquery ajax get完成登录)
在每次调用pushState时,firefox都会询问我们是否要保存密码。 Edge,Chrome和IE不会这样做,只能使用Firefox。
有什么想法可以更改我的应用程序以阻止这种情况发生吗?
我绝对不是在寻找更改浏览器选项的方法-必须在应用程序中进行更改-我不能对用户群中的每个用户提出要求,以某种方式设置他们的浏览器。在所有PC上都是相同的问题,并且在部署的服务器上的标准IIS上以及在VS调试模式下的IIS上都会发生。谢谢
答案 0 :(得分:1)
我不知道这是否可以解决您的问题,而且还可以避免其他与SPA相关的问题,但是我建议您使用URL模式来跟踪您的位置,然后单击后退按钮,并像他们应该。
基本上,每个主要步骤或页面都具有其自己的URL,您只需阅读并执行操作,然后将其导航至该URL,而不进行动态更改。在诸如angular的框架中,其称为路线。
一个示例,要制作一个向导页面,请在第一页上选择一个进入数字2的类别。我不只是更新SPA上的变量,而是导航到http://myapp/2 .....当发生这种情况,它会转到同一页面,但是我阅读了URL,并知道第一个参数是类别。现在,刷新并恢复工作即可,而我不必提高页面状态。
答案 1 :(得分:0)
我意识到这是一个较晚的响应,但希望它将对某人有所帮助。使用pushstate更改URL时,我遇到了同样的问题。登录后,每次进入新URL时,系统都会提示我再次保存凭据。这仅在Firefox上发生。
为避免此问题,在成功登录并进入第一个pushstate之后,我将登录名和密码框设置为“”。