Interrompi la compilazione di un modulo da parte di LastPass


130

C'è un modo per impedire all'estensione del browser LastPass di compilare un modulo basato su HTML con un campo di input con il nome "nome utente"?

Questo è un campo nascosto, quindi non voglio che alcun software utilizzi questo campo per i propri scopi:

<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">

La soluzione non dovrebbe essere come "rinominare il campo di input".


12
Se il campo è nascosto, è meglio impostarlo type="hidden"invece di nasconderlo con CSS
Reeno

2
sembra che tu abbia accettato la risposta sbagliata perché non funziona ... quello che ha suggerito Alexander funziona, quindi potresti voler cambiare la tua selezione;)
Dominique

2
super semplice $(':input').attr('data-lpignore', true);Questo è tutto. Questo diable lastpass compilando tutti i moduli.
Adarsh ​​Madrecha

Risposte:


170

Aggiunta

data-lpignore="true"

in un campo di input disabilitato la casella grigia LastPass [...] per me.

Proveniente da LastPass.com


5
Questa dovrebbe essere la risposta valida. LP sembra rispettare questo attributo e non richiede nomi, id o ruoli di "ricerca" folli.
Corneliu

28
questo rimuove solo l'icona grigia, ma non impedisce a LastPass di ignorare il riempimento automatico degli input
Arnis Juraga

26
questa NON dovrebbe essere la risposta accettata poiché NON "Interrompi la compilazione di un modulo da parte di LastPass"
Conrad Warhol

3
Secondo il collegamento fornito nella risposta ( lastpass.com/support.php?cmd=showfaq&id=10512 ), LP impedisce solo che l'icona venga visualizzata su quel campo
Kunal

47

Devono essere soddisfatte due condizioni:

  1. Il modulo (non l'elemento) deve avere un autocomplete="off"attributo
  2. L'utente Lastpass deve avere questa opzione abilitata: Settings > Advanced > Allow pages to disable autofill

Quindi questo dipende sia dall'utente che dallo sviluppatore.


39

Quello che ha funzionato per me è avere la parola "-search-" nell'id del modulo, qualcosa come <form id="affiliate-search-form">- e lastpass non aggiunge i suoi elementi agli input del modulo. Funziona con qualcosa di più semplice come <form id="search">ma non funziona<form id="se1rch">


8
Inoltre è soppresso se: - se il nome del campo o l' attributo della classe contiene le parole "cerca" o "srch" - se l' ID del modulo o l' attributo del nome contiene "ricerca" - l' attributo del ruolo del modulo è "ricerca"
e1v

1
Sfortunatamente, questo non funziona per i campi della password. In effetti, il modulo è ancora compilato automaticamente. Nel mio caso, l'aggiunta searchcome classi sia al nome utente che alla password ha disabilitato il pulsante asterisco nel campo del nome utente, ma il campo della password rimane così com'è.
Mike Rockétt

2
Sì, posso confermare che i campi della password sono ancora compilati quando si utilizza questo approccio. :-(
Simon East

7
Questo non si applica più alle attuali versioni di Lastpass. Quindi questa risposta dovrebbe essere rimossa.
Heroselohim

4
Aggiungi -search- all'ID di un singolo campo di input funziona per me su Chrome 51, LastPass 4.1.17. Aggiungerlo al modulo non aiuta.
Alex2php

18

So di essere in ritardo alla festa qui, ma l'ho scoperto quando stavo cercando di impedire a LastPass di rovinare i miei moduli. @takeshin è corretto in quanto il completamento automatico non è sufficiente. Ho finito per fare l'hack qui sotto solo per nascondere il simbolo. Non carino, ma mi sono sbarazzato dell'icona.

Se qualche sviluppatore lastpass sta leggendo questo, per favore ci dia un attributo da usare, così non dobbiamo ricorrere a cose come questa.

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}

2
Questa è l'unica soluzione che ha funzionato per me (anche giocando con le impostazioni lastpass, che in realtà non mi aspetto che il mio utente faccia comunque), sebbene sia in conflitto con me che background-imageimposto i miei campi di input (mi piace mettere "clear pulsanti "sui campi di input) - nel qual caso ciò che ha funzionato anche per me è stato solo l'impostazione background-imagee background-positioncon !importantper sovrascrivere lo stile incorporato lastpass.
Guss

Pensiero molto creativo! Grazie per questo!
Howard

18

Penso che lastpass onori l' autocomplete="off"attributo per gli input, ma non ne sono sicuro al 100%.

EDIT Come altri hanno sottolineato. funziona solo se l'utente ha configurato l'ultimo passaggio per rispettarlo.


20
Sì, ma non per impostazione predefinita: helpdesk.lastpass.com/extension-preferences/advanced
Marco

12
Posso confermare che lastpass non onora autocomplete="off"a livello di modulo. Questo mi ha solo fatto perdere un'ora di tempo di sviluppo su un modulo di "modifica utente" che sembrava visualizzare l'indirizzo e-mail sbagliato. Le preferenze lastpass hanno un'opzione "non sovrascrivere i campi già riempiti", che aiuta molto.
Jason il

7
Come ha affermato Marco, è necessario attivare questo comportamento. Preferenze-> Avanzate-> Rispetta Completamento automatico = disattivato: consenti ai siti web di disabilitare il riempimento automatico
Dan

come si aggira questo in lastpass?
Crash893

14

Per me ha funzionato o type=searchche è un po 'uguale texto utilizzatorole=note .

Puoi controllare LastPass-JavaScript ma è enorme, potresti trovare qualche soluzione alternativa, da quello che ho visto controllano solo 4 tipi di input, quindi input type=searchsarebbe una soluzione alternativa:

!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))

Anche quelle sono le roleparole chiave che sembrano ignorare:

var c = b.getAttribute("role");
switch (c) {
case "navigation":
case "banner":
case "contentinfo":
case "note":
case "search":
case "seealso":
case "columnheader":
case "presentation":
case "toolbar":
case "directory":`

Ho controllato LastPass ' onloadwff.js, preparati per 26.960 righe di codice :)


5
Ho provato tutte le risposte sopra ed type=searchè l'unica cosa che funziona per me.
Ryan King

1
+1, sembra che l'uso type=searchsia l'unico modo per impedire il riempimento automatico indipendentemente dallo stato dell'impostazione "Rispetta completamento automatico = disattivato" di LastPass.
johnnyRose

Ho provato ad aggiungere role="note"o type="search". Nessuno ha funzionato sull'ultimo Chrome e l'ultimo lastpass.
Nikita 웃

sembra che lpignorestia funzionando di nuovo, https://jsfiddle.net/78z0L1sa/3/
suonami

OMG, questo è fastidioso, LastPass stava convertendo il mio tipo = campo password di testo in tipo = password e su questa particolare schermata era necessario vedere la password, quindi LastPass ha aggiunto la password del sito e non la password corretta senza che l'utente sapesse quando l'aveva salvata stava cambiando le credenziali e interrompendo le connessioni ad altri sistemi. L'Pignore, ha rimosso solo l'icona, le altre soluzioni hanno richiesto l'interazione dell'utente, il che non è l'ideale. Infine, la modifica del tipo di ricerca ha funzionato; anche se odio doverlo fare a causa del software di qualcun altro. Comunque, voto positivo su questo.
Jason Martin,

10

Aggiungi "cerca" per inserire l'ID

<input type="text" name="user" id="user-search"/>

1
Funziona bene per me. Testato sull'ultimo Chrome. È un po 'un trucco, ma non così potenzialmente dannoso come gli altri, quindi ci proverò.
Tedd Hansen

6

Un po 'in ritardo per la festa, ma ho appena ottenuto questo risultato modificando il modulo con:

<form autocomplete="off" name="lastpass-disable-search">

Immagino che questo faccia pensare che sia un modulo di ricerca. Tuttavia, questo non funziona per i campi della password! Lastpass ignora il campo del nome in questo caso.

L'unico modo in cui sono riuscito a farlo è aggiungere quanto segue direttamente nella parte superiore del modulo:

<form autocomplete="off">
    <div id="lp" ><input type="text" /><input type="password" /></div><script type="text/javascript">setTimeout(function(){document.getElementById('lp').style.display = 'none'},75);</script>
</form>

Provoca un brutto sfarfallio ma rimuove le sciocchezze di compilazione automatica, sebbene mostri ancora il widget "genera password". LastPass attende fino a quando è pronto e quindi controlla se sono presenti campi password visibili, quindi non è possibile nascondere o ridurre i campi fittizi sopra.


5

Per questa ultima versione buggata di ottobre 2019 di Lastpass, questa semplice soluzione sembra essere la migliore.

Inserisci

type="search"

al tuo input.

La routine lastpass controlla l' typeattributo per determinare cosa fare con il suo riempimento automatico e non fa nulla su questo html5type di "ricerca". Sicuramente questo è leggermente hacky, ma è un cambio di una riga che può essere facilmente rimosso quando aggiustano il loro script difettoso.

Nota: dopo aver eseguito questa operazione, il tuo input potrebbe apparire con uno stile diverso da alcuni browser se rilevano l' typeattributo. Se si osserva questo, si può impedire che accada impostando le proprietà CSS specifiche per il browser -webkit-appearancee -moz-appearanceper 'none'il vostro input.


4

Questo codice di stile ES6 è stato utile per me in quanto ha aggiunto data-lpignore a tutti i miei controlli di input:

const elements = document.getElementsByTagName("INPUT");
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}

Per accedere a uno specifico controllo INPUT, si potrebbe scrivere qualcosa del genere:

document.getElementById('userInput').setAttribute("data-lpignore", "true");

Oppure puoi farlo per nome della classe:

const elements = document.getElementsByClassName('no-last-pass');
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}

1

Purtroppo nessuna delle opzioni qui (completamento automatico, data-lpignore ecc.) Ha impedito a LastPass di compilare automaticamente i campi del mio modulo. Ho adottato un approccio più martellante al problema e ho impostato in modo asincrono gli nameattributi di input tramite JavaScript. La seguente funzione dipendente da jQuery (richiamata dal gestore di eventi onsubmit del modulo) ha fatto il trucco:

function setInputNames() {
    $('#myForm input').each(function(idx, el) {
        el = $(el);
        if (el.attr('tmp-name')) {
            el.attr('name', el.attr('tmp-name'));
        }
    });
}

$('#myForm').submit(setInputNames);

Nel modulo, ho semplicemente usato gli tmp-nameattributi al posto degli nameattributi equivalenti . Esempio:

<form id="myForm" method="post" action="/someUrl">
    <input name="username" type="text">
    <input tmp-name="password" type="password">
</form>

Aggiornamento 2019-03-20

Ho ancora incontrato difficoltà con quanto sopra a causa di AngularJS a seconda dei campi del modulo name attributi in modo che ngMessages presentasse correttamente i messaggi di errore di convalida del campo.

In definitiva, l'unica soluzione che ho trovato per impedire a LastPass di compilare i campi della password sul mio modulo di modifica della password era:

  1. Evita di usare input[type=password]completamente, AND
  2. di non avere "password" nel nome del campo

Poiché devo essere in grado di inviare il modulo normalmente nel mio caso, ho comunque utilizzato la mia soluzione originale per aggiornare i nomi dei campi "appena in tempo". Per evitare di utilizzare i campi di immissione della password, ho riscontrato che questa soluzione ha funzionato molto bene.


0

Ho provato a rinominare la ricerca, ma per qualche motivo non ha funzionato. Quello che ha funzionato per me è il seguente:

  1. contrassegna il modulo per il completamento automatico - autocomplete = "off"
  2. modificare il tipo di input del campo modulo in testo
  3. aggiungi una nuova classe al tuo css per mascherare l'input, simula un campo password
  4. bit css: input.masker {-webkit-text-security: disco; }

Provato e testato nelle ultime versioni di FF e Chrome.


0

Ecco cosa ha funzionato per me per impedire a lastpass di riempire una scatola di rasoio @ Html.EditorFor in Chrome:

Fai clic sull'icona LastPass attiva nella barra degli strumenti, quindi vai su Opzioni account> Preferenze estensione.

In questa schermata seleziona "Non sovrascrivere i campi già riempiti" (in basso)

Quindi, fai clic su "avanzate" a sinistra.

In questa schermata seleziona "Rispetta il completamento automatico = off: consenti ai siti web di disabilitare il riempimento automatico".

Non avevo bisogno di fare nulla di speciale nel mio modulo cshtml ASP, ma avevo un valore predefinito nel modulo per la casella @ Html.EditorFor.

Spero che questo aiuti e funzioni per qualcuno. Non sono riuscito a trovare alcun aiuto specifico per Razor su questo problema sul Web, quindi ho pensato di aggiungerlo poiché l'ho capito con l'aiuto del collegamento e dei contributi sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.