2010-04-12 2 views
9

Ho un'applicazione Web scritta in puro JavaScript (nessun HTML pre-generato tranne per il documento che carica tutti i file JS).Come attivare la compilazione automatica della password salvata nei browser?

Questa applicazione contiene un modulo di accesso che viene creato dinamicamente quando viene attivato l'evento evento document.ready. Trovo il browser nel mostrare "Ricorda password?" dialogo inviando il modulo di login in un iframe nascosto prima di accedere usando ajax (in Firefox la password appare nell'elenco delle password salvate, quindi questa parte ovviamente funziona) ma le password salvate non vengono mai compilate dopo che la schermata di login è stata caricata di nuovo in un secondo momento tempo. La stessa cosa accade in Firefox e Safari.

C'è qualcosa che posso fare o una funzione che posso chiamare per attivare la compilazione automatica?

UPDATE: il riempimento automatico funziona in Safari al caricamento iniziale della pagina, ma non quando l'utente si disconnette e il modulo di accesso viene ricreato senza una ricarica della pagina. In Firefox non funziona mai.

risposta

4

Oltre ad avvolgere gli elementi del modulo in un elemento form, assicurarsi che tutti gli input (e forse anche la forma) ha uniche name e id attributi che non cambia. Probabilmente il nome dovrebbe essere qualcosa di descrittivo come password per la password ecc., Non proprio sicuro su quale browser di gradi usi queste informazioni, ma le funzionalità di "autosuggest"/"bacchetta magica" potrebbero funzionare meglio se usi un nome standard.

E ovviamente dovresti assicurarti di non impostare nessun attributo autosuggest/autofill su false (il framework js potrebbe farlo per qualche motivo, se ne stai usando uno qualsiasi).

Una terza possibilità è che alcuni browser eseguano automaticamente il riempimento automatico prima che lo script carichi e scriva il modulo sulla pagina, provare a creare una versione html statica del modulo e vedere se funziona con.

La soluzione più semplice (se le forme statiche funzionano) è forzare una pagina di ricaricamento al logout (probabilmente si vuole scartare lo "stato" del javascript in esecuzione dopo il logout comunque, quindi rinfrescare è davvero una buona cosa)

+0

È possibile avere sempre il modulo di accesso sulla pagina e solo nascosto fino a quando il documento è pronto. – gnarf

+0

Ricaricare la pagina al logout fa funzionare la compilazione automatica in Safari e Chrome. Firefox, tuttavia, richiederà probabilmente una pagina di accesso statica che stavo cercando di evitare. –

0

Non è possibile utilizzare un trucco simile: utilizzare un iframe per caricare il modulo e quindi quando viene inviato il modulo di accesso, in realtà, inviare il modulo iframe, che conterrà la password salvata.

Per ottenere risultati 'password' per apparire in forma visibile Penso che si potrebbe misurare la lunghezza della password in forma iframe e quindi riempire campo password della forma visibile con lo stesso numero di *.

1

Alcuni browser richiedono il tag "modulo" per abilitare lo username locale & di memorizzazione della password. Ha avuto lo stesso problema in applicazioni AJAX, e nel mio caso ho solo aggiunto

<form>...</form> 

tag.