Firefox保存密码,但chrome不保存登录表单的密码

时间:2016-08-04 07:15:04

标签: php html

对于我的登录表单,firefox保存但chrome不提示“保存密码”框。我试过添加autocomplete =“on”,但它无法正常工作。任何人都可以建议我的答案。我不想使用任何扩展。我的代码如下。

<form spellcheck="false" autocomplete="on" id="login-form" action="/user/login/do-login" method="post">
                <div class="separator-bar"></div>
                <div class="credentials-container">
                    <div class="username-container">
                        <div class="label">Email/Username: </div>
                        <div class="field">
                            <input class="wx-input" type="text" name="<?php echo $this->escape(App_Api_User::ARG_USERNAME)?>" value="<?php if(isset($this->username)) {echo $this->username;}?>" spellcheck="false"/>
                        </div>
                    </div>
                    <div class="password-container">
                        <div class="label">password: </div>
                        <div class="field">
                            <input class="wx-input" type="password" name="<?php echo $this->escape(App_Api_User::ARG_PASSWORD)?>"/>
                        </div>
                    </div>    
                </div>

                <div class="separator-bar bottom"></div>
                <div class="forgot-password-container">
                    <div class="text">forgot password: </div>
                    <div class="password-page button"><a class="loginForgotPassword" href="#">CLICK HERE</a></div>
                </div>

                <div class="submit-container">
                    <input class="login button disabled" type="submit" name="submit" value="GO" />
                </div>
                <div id="infoMessageContainer">

                </div>

                <div class="general-error"></div>

            </form>

$('body').on('click', '.submit-container .login', function(e) {
            if ($(this).hasClass('disabled')) {
                e.preventDefault();
                e.stopPropagation();
            }else{
                var self = this;
                self.submit();
            }
        });

 _success: function()
    {
        window.location.href = '/user';      
    }

2 个答案:

答案 0 :(得分:1)

所有浏览器都使用启发式方法来了解何时保存密码。我熟悉Firefox和Chrome。他们使用的启发式似乎是:

  • 表单必须有密码字段
  • 在密码字段之前输入的文本被假定为用户名
  • 仅保存这两个输入字段。然后Firefox会提示你 当您填写包含两个密码字段的表单时,它会记住您更改的密码。

以下列举了我通常看到的破坏这些算法的内容:

  • 使用autocomplete = off的网站(具体请求 浏览器不记得密码)
  • 将登录分为多个页面,其中在一个页面上输入用户名,并在下一个页面上输入密码。
  • 使用Javascript将这些字段的内容复制到隐藏中 隐藏表单中的字段,然后提交隐藏的表单 而不是可见的形式
  • 要求填写两个以上的字段,例如 用户名,SSN和密码 用户名,密码和PIN
  • 更改用户名和密码字段的名称 定期(导致firefox不再能够填写 密码,即使它被记住了。)

答案 1 :(得分:0)

我做了很多更改,然后最终使用下面的代码块。 希望它会帮助某人。您需要使用此代码提交表单。

        var winNav = window.navigator,
        isIOSChrome = winNav.userAgent.match("CriOS");
        var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
        //Use below if statement, if you want to run only in chrome 
        if(isChrome || isIOSChrome){
            $('#login-form').submit(function () {
                if(-1 !== this.action.indexOf('/login')) {
                    var jForm = $(this);
                    $.post(this.action, $(this).serialize(), function (data) {
                        if (data.success == true) {
                           jForm[0].action = '/user';
                           jForm.submit();
                        }
                    });
                    return false;
                }
            });
        }