Ottenere Chrome per richiedere di salvare la password quando si utilizza AJAX per accedere

NOTA: questa domanda è stata pesantemente modificata dalla sua versione originale. Il problema è stato notevolmente semplificato.

Domande simili sono state poste più volte prima, in forms diverse – ad es.

Come posso chiedere al browser di salvare la password?

In che modo il browser sa quando richiedere all’utente di salvare la password?

Tuttavia, questa domanda ha un aspetto molto specifico delle funzionalità di Chrome, quindi è molto diversa a tale riguardo.

A giudicare dalle risposte precedenti, sembra che l’approccio migliore per ottenere la richiesta di salvataggio della password da parte di Chrome è di inviare il modulo a un iframe fittizio, mentre si effettua l’accesso tramite AJAX : esempio . Questo ha senso per me e quindi mi sono messo a trafficare con qualche codice di esempio per qualche giorno. Tuttavia, il comportamento di Chrome in questo senso NON ha senso per me. Affatto. Da qui la domanda.

Per qualche motivo, Chrome non ti chiederà di salvare la tua password se il modulo che invia ad iframe fittizio è presente durante / right after onDomReady .

Un jsfiddle può essere trovato qui , ma è poco utile perché è necessario creare dummy.html localmente per vedere il comportamento descritto . Quindi il modo migliore per vedere questo è copiare l’intero dummy.html html nel tuo index.html e poi creare anche un file dummy.html .

Ecco il codice completo per index.html . I tre approcci sono evidenziati come (1) , (2) , (3) . Solo (2) garantisce che all’utente venga richiesto di salvare la propria password, e il fatto che (3) non funzioni è particolarmente perplesso per me.

   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); });      
<!-- -->

Se qualcuno potesse spiegare cosa sta succedendo qui, sarei molto riconoscente.

EDIT: tieni presente che questo “problema con la password di salvataggio” con Chrome si è esteso alle persone che lavorano con AngularJS, sviluppato anche da Google: Github