HTML单页应用程序,用浏览器填写用户名和密码

Fra*_*ank 9 html javascript browser login single-page-application

有没有办法告诉浏览器已经显示了一个登录表单,并且它应该用保存的凭据填写该字段?

我有这个SPA,在加载文档后用ajax加载登录视图.我成功登录后设法让Firefox保存凭据但是当我再次尝试登录时,字段未填写.

此外,我似乎无法让Chrome提示保存密码,因为我无法重定向浏览器,Chrome似乎绑定到该事件.

Jes*_*sse -4

一般来说,这对于存储用户名和密码来说是一个非常糟糕的做法,但是如果您想要长期保存它,您可以将其存储在 localStorage 中,或者如果您希望仅在浏览器打开时将其存储在 sessionStorage 中,(请注意,它适用于 IE8)及更高版本),但 IE7 不再受支持,因此这应该不是问题。这就是你要做的。我不建议将密码存储在会话存储中,我会将其存储为 cookie,因为 cookie 或者如果您有权访问服务器,则使用会话变量来存储密码,但无论哪种方式,我都会发布代码,即使存储该代码会话和本地存储中的信息是不好的做法。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
    <form action="">
        <input type="text" name="username" id="username" value="username@login">
        <input type="password" name="password" id="password" value="password">
    </form>
</body>
</html>
<script>

    window.onload = function(){

        if(window.sessionStorage){
            //depending on which one you would want to use 
            var form = document.getElementsByTagName('form')[0];
            //optionally you can use querySelector instead
            var user = document.getElementById('username');
            var password = document.getElementById('password'); 

            console.log(user);
            console.log(password);

            if(!sessionStorage.getItem("username")){

                sessionStorage.setItem("username", user.value);


            } else {

                user.value = sessionStorage.getItem("username");


            }

            if(!sessionStorage.getItem("password")){

                sessionStorage.setItem("password", password.value);

            } else {

                password.value = sessionStorage.getItem("password");

            }
        }

        console.log(sessionStorage);

    }

</script>
Run Code Online (Sandbox Code Playgroud)