Получение Chrome для запроса сохранения пароля при использовании AJAX для входа

ПРИМЕЧАНИЕ. Этот вопрос был сильно отредактирован по сравнению с оригинальной версией. Вопрос был значительно упрощен.

Подобные вопросы задавались несколько раз ранее, в разных формах - например,

Как я могу получить браузер с просьбой сохранить пароль?

Как браузер узнает, когда предложить пользователю сохранить пароль?

Однако этот вопрос затрагивает очень специфический аспект Chrome.с функциональностью, так что это совсем другое дело.

Судя по прошлым ответам, кажется, что лучший способ заставить Chrome запрашивать сохранение пароля - это отправить форму в фиктивный iframe, в то же время фактически входя в систему через AJAX:пример, Это имеет смысл для меня, и поэтому я возился с примером кода в течение нескольких дней. Тем не менее, Chromeповедение в этом отношении не имеет смысла для меня. Совсем. Отсюда и вопрос.

По какой-то причине Chrome не предложит вам сохранить ваш пароль, если форма, которая отправляется на фиктивный iframe, присутствует во время / сразу послеonDomReady.

Jsfiddle можно найтиВот, но это'мало пользы, потому чтоты должен создатьdummy.html локально, чтобы увидеть поведение, описанное, Так что лучший способ убедиться в этом - скопировать полный html на свойindex.html а затем создатьdummy.html файл тоже.

Вот полный код дляindex.html, Три подхода выделены как,(1)(2)(3), Только(2) гарантирует, что пользователю предлагается сохранить свой пароль, а также тот факт, что(3) Безразлично»Эта работа вызывает у меня особое недоумение.



Chrome: Remember Password


  

    $(function(){

        function create_login_form()
        {
            $('#login_form').html(
            "" +
            "" +
            "");
        }

        // (1) this does not work. chrome seems to require time after "onDomReady" to process
        // the forms that are present on the page. if the form fields exist while that processing
        // is going on, they will not generate the "Save Password?" prompt.
        //create_login_form();

        // (2) This works. chrome has obviously finished its "work" on the form fields by now so
        // we can add our content to the form and, upon submit, it will prompt "Save Password?"

        setTimeout(create_login_form,500);

    });










    
    



 

Если бы кто-нибудь мог объяснить, чтоЗдесь происходит, я был бы очень признателен.

РЕДАКТИРОВАТЬ: Обратите внимание, что этосохранение пароля с Chrome распространяется на людей, работающих с AngularJS, также разработанной Google:Github

Ответы на вопрос(4)

Ваш ответ на вопрос