Se ho ben compreso il codice sorgente di Firefox, il browser cerca prima i campi password nei moduli. Se il modulo contiene più di 3 campi password, la funzione di riempimento automatico ignora tale modulo.
Dopo aver trovato da 1 a 3 campi di password, il browser cerca il campo di accesso. Il browser esegue una ricerca all'indietro partendo dal primo campo della password e presuppone che il campo di accesso sia il primo campo trovato del tipo text
o email
o url
o tel
o number
.
Il passo successivo dipende dal controllo dei moduli durante il caricamento della pagina o dall'invio del modulo. Se controlliamo durante il caricamento della pagina e c'è un campo di accesso e esattamente un campo di password, il caso è semplice e il browser può compilare il modulo.
Altri casi (modulo di invio o più di 1 campo password) eseguono una logica "intelligente" per determinare quale campo della password contiene la nuova password e quale la vecchia password, probabilmente per aggiornare le password memorizzate). Se sei interessato ai dettagli, scarica il codice sorgente e apri il file toolkit/components/passwordmgr/nsLoginManager.js
. Le funzioni da verificare sono _fillForm
, _getFormFields
e _getPasswordFields
.
Solo per riassumere, Firefox non ha bisogno di alcun ID, nome o attributi di classe per indovinare quale campo è login o password. Si basa solo sui tipi e sull'ordine dei campi modulo.
Questo è corretto. Va anche detto che questo funziona solo con i campi nell'HTML originale, non con le cose generate da JS. – user123444555621
Grazie mille. È strano dal momento che Firefox memorizza Fieldname in signon.sqlite. Non ho avuto il tempo e la pazienza di cercare nel codice sorgente, ma darò un'occhiata. –
La tua risposta è molto utile grazie per aver guardato il codice FF e averlo spiegato. Ho provato quello che hai spiegato e verifica ciò che hai delineato. Questo comportamento mi confondeva perché speravo di rimuovere il completamento automatico dei campi cambiando i loro nomi, perché autocomplete = off non impediva il completamento automatico dei dati che erano stati archiviati prima che un autocomplete = off fosse abilitato. – eloone