Pare o LastPass de preencher um formulário

130

Existe uma maneira de impedir que a extensão do navegador LastPass preencha um formulário baseado em HTML com um campo de entrada com o nome "nome de usuário"?

Este é um campo oculto, portanto, não quero que nenhum software use esse campo para seus propósitos:

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

A solução não deve ser como "renomear o campo de entrada".

Marco
fonte
12
Se o campo estiver oculto, é melhor configurá-lo em type="hidden"vez de ocultá-lo com CSS
Reeno
2
parece que você aceitou a resposta errada, pois ela não está funcionando ... o que Alexander sugeriu funciona, então você pode querer mudar sua seleção;)
Dominique
2
super simples $(':input').attr('data-lpignore', true);Isso é tudo. Isso irá preencher o formulário lastpass em todos os formulários.
Adarsh ​​Madrecha

Respostas:

170

Adicionando

data-lpignore="true"

para um campo de entrada, desabilitou a caixa cinza [...] LastPass para mim.

Originado de LastPass.com

whatismybrowser.com
fonte
5
Essa deve ser a resposta válida. O LP parece respeitar esse atributo e não requer nenhum nome ou identificação ou função de "pesquisa" maluca.
Corneliu
28
isso remove apenas o ícone cinza, mas não impede o LastPass de ignorar o preenchimento automático de entrada
Arnis Juraga 4/17/17
26
Isso não deve ser a resposta aceite uma vez que isso não "Stop LastPass preenchimento de um formulário"
Conrad Warhol
3
De acordo com o link fornecido na resposta ( lastpass.com/support.php?cmd=showfaq&id=10512 ), o LP apenas impede que o ícone seja exibido nesse campo
Kunal
47

Duas condições devem ser atendidas:

  1. O formulário (não o elemento) precisa ter autocomplete="off"atributo
  2. O usuário Lastpass precisa ter esta opção ativada: Settings > Advanced > Allow pages to disable autofill

Portanto, isso depende do usuário e do desenvolvedor.

leva
fonte
39

O que funcionou para mim foi ter a palavra "-search-" no id do formulário, algo como <form id="affiliate-search-form">- e lastpass não adiciona seus elementos nas entradas do formulário. Funciona com algo mais simples, <form id="search">mas não funciona com<form id="se1rch">

Alexander Gorbatenko
fonte
8
Também será suprimido se: - se o nome do campo ou o atributo da classe contiver as palavras "search" ou "srch" - se o ID do formulário ou o atributo do nome contiver "search" - o atributo da função do formulário for "search"
e1v
1
Infelizmente, isso não funciona para campos de senha. Efetivamente, o formulário ainda é preenchido automaticamente. No meu caso, adicionar searchcomo classes ao nome de usuário e à senha desabilitou o botão asterisco no campo do nome de usuário, mas o campo da senha permanece como está.
Mike Rockétt
2
Sim, posso confirmar que os campos de senha ainda estão preenchidos ao usar esta abordagem. :-(
Simon East
7
Isso não se aplica mais às versões atuais do Lastpass. Portanto, essa resposta deve ser removida.
Heroselohim
4
Adicionar -search- ao ID de um único campo de entrada funciona para mim no Chrome 51, LastPass 4.1.17. Adicioná-lo ao formulário não ajuda.
Alex2php
18

Sei que estou atrasado para a festa aqui, mas descobri isso quando estava tentando impedir que o lastpass estragasse meus formulários. @takeshin está correto, pois o preenchimento automático não é suficiente. Acabei fazendo o hack abaixo apenas para esconder o símbolo. Não é bonito, mas me livrei do ícone.

Se algum desenvolvedor lastpass estiver lendo isso, forneça um atributo para usar, para que não tenhamos que recorrer a coisas como essa.

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}
jan
fonte
2
Esta é a única solução que funcionou para mim (mesmo jogando com as configurações do lastpass, o que eu realmente não espero que meu usuário faça), embora entre em conflito comigo definir minhas próprias background-imagenos campos de entrada (eu gosto de colocar "clear" botões" em campos de entrada) - nesse caso, o que também trabalharam para mim foi apenas a criação background-imagee background-positioncom !importanta substituir o estilo builtin LastPass.
Guss 8/16
Pensamento muito criativo! Obrigado por isso!
264 Howard
18

Eu acho que o lastpass honra o autocomplete="off"atributo de entradas, mas não tenho 100% de certeza.

EDITAR Como outros já apontaram. isso só funciona se o último passe do usuário estiver configurado para honrar isso.

mituw16
fonte
20
Sim, mas não por padrão: helpdesk.lastpass.com/extension-preferences/advanced
Marco
12
Posso confirmar lastpass não honra autocomplete="off"no nível do formulário. Isso me desperdiçou uma hora de tempo de desenvolvimento em um formulário "editar usuário" que parecia exibir o endereço de email errado. As preferências do lastpass têm uma opção "não substitua os campos que já estão preenchidos", o que ajuda muito.
Jason
7
Como Marco afirmou, você precisa ativar esse comportamento. Preferências-> Avançado-> Respeitar o AutoCompletar = desativado: permitir que sites desabilitem o Preenchimento Automático
Dan
como você ignora isso no lastpass?
Crash893
14

Para mim, trabalhou tanto o type=searchque é igual textou usando role=note.

Você pode verificar o LastPass-JavaScript, mas é enorme, pode ser que você encontre alguma solução alternativa lá, pelo que vi, eles verificam apenas 4 tipos de entrada, portanto, input type=searchseria uma solução alternativa:

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

Além disso, essas são as rolepalavras - chave que parecem ignorar:

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":`

Eu verifiquei LastPass ' onloadwff.js, prepare-se para 26.960 linhas de código :)

MushyPeas
fonte
5
Eu tentei todas as respostas acima e type=searché a única coisa que funciona para mim.
Ryan King
1
+1, parece que usar type=searché a única maneira de impedir o preenchimento automático, independentemente do estado da configuração LastPass "Respeitar o preenchimento automático = desativado".
johnnyRose
Tentei adicionar role="note"ou type="search". Nenhum funcionou no Chrome mais recente e no lastpass mais recente.
Nikita 웃
parece que o lpignoreestá funcionando novamente, mexer-me istohttps://jsfiddle.net/78z0L1sa/3/
MushyPeas
OMG, isso é irritante, o LastPass estava convertendo meu campo type = text password para type = password e, nessa tela específica, era necessário que a senha fosse vista, o LastPass adicionou a senha do site e não a senha correta sem que o usuário soubesse quando o salvou estava mudando as credenciais e interrompendo suas conexões com outros sistemas. O lpignore, apenas removeu o ícone, as outras soluções exigiram interação do usuário, o que não é o ideal. Por fim, alterar o tipo de pesquisa funcionou; embora eu odeie ter que fazer isso por causa do software de outra pessoa. De qualquer forma, faça um voto positivo neste.
Jason Martin
10

Adicione "pesquisa" para inserir o ID

<input type="text" name="user" id="user-search"/>
Alex
fonte
1
Funciona bem para mim. Testado no Chrome mais recente. É um pouco complicado, mas não tão potencialmente violento quanto os outros, então eu vou tentar.
Tedd Hansen
6

Tarde demais para a festa, mas acabei de conseguir isso modificando o formulário com:

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

Eu acho que esse tolo passa a pensar que é um formulário de pesquisa. No entanto, isso não funciona para campos de senha! Lastpass ignora o campo de nome neste caso.

A única maneira de conseguir fazer isso é adicionar o seguinte diretamente na parte superior do formulário:

<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>

Isso causa um tremor desagradável, mas remove o disparate do preenchimento automático - embora ainda mostre o widget "gerar senha". O LastPass espera até domready e verifica se há algum campo de senha visível, para que não seja possível ocultar ou reduzir os campos simulados acima.

PeteAUK
fonte
5

Para esta versão mais recente de outubro de 2019 do Lastpass, esta correção simples parece ser a melhor.

Adicionar

type="search"

à sua entrada.

A rotina lastpass verifica o typeatributo para determinar o que fazer com o preenchimento automático e não faz nada neste html5 typede "pesquisa". Claro que isso é um pouco invasivo, mas é uma alteração de uma linha que pode ser facilmente removida quando eles corrigem seus scripts de buggy.

Nota: Depois de fazer isso, sua entrada pode parecer ter um estilo diferente por alguns navegadores, se eles continuarem no typeatributo. Se você observar isso, você pode impedir que isso aconteça, definindo as propriedades CSS específicas do navegador -webkit-appearancee -moz-appearancepara 'none'a sua entrada.

Tony Brasunas
fonte
4

Esse código de estilo ES6 foi útil para mim, pois adicionou data-lpignore a todos os meus controles de entrada:

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

Para acessar um controle INPUT específico, pode-se escrever algo como isto:

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

Ou você pode fazer isso pelo nome da classe:

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

Nenhuma das opções aqui (preenchimento automático, data lpignore etc.) impediu o LastPass de preencher automaticamente meus campos de formulário, infelizmente. Adotei uma abordagem mais arraigada ao problema e defina de forma assíncrona os nameatributos de entrada via JavaScript. A seguinte função dependente de jQuery (chamada do manipulador de eventos onsubmit do formulário) fez o truque:

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

No formulário, eu simplesmente usei tmp-nameatributos no lugar dos nameatributos equivalentes . Exemplo:

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

Atualização 2019-03-20

Ainda encontrei dificuldades com o exposto acima, devido ao AngularJS, dependendo dos campos do formulário com nameatributos para que o ngMessages apresentasse corretamente as mensagens de erro de validação de campo.

Por fim, a única solução que encontrei para impedir que o LastPass preencha os campos de senha no meu formulário de Alteração de senha foi:

  1. Evite usar input[type=password]totalmente, E
  2. para não ter 'senha' no nome do campo

Como preciso enviar o formulário normalmente no meu caso, ainda empreguei minha solução original para atualizar os nomes dos campos 'just in time'. Para evitar o uso de campos de entrada de senha, achei que esta solução funcionava muito bem.

John Rix
fonte
0

Tentei mudar o nome da pesquisa, mas por algum motivo isso não funcionou. O que funcionou para mim é o seguinte:

  1. marcar formulário para preenchimento automático - autocomplete = "off"
  2. altere o tipo de entrada do campo de formulário para texto
  3. adicione uma nova classe ao seu css para mascarar a entrada, simule um campo de senha
  4. bit css: input.masker {-webkit-text-security: disco; }

Tentou e testou nas versões mais recentes do FF e Chrome.

Louis Ferreira
fonte
0

Aqui está o que funcionou para mim para impedir que o lastpass preencha uma caixa de barbear @ Html.EditorFor no Chrome:

Clique no ícone LastPass ativo na barra de ferramentas e vá para Opções da conta> Preferências de extensão.

Nesta tela, marque "Não substitua os campos que já foram preenchidos" (na parte inferior)

Em seguida, clique em "avançado" à esquerda.

Nesta tela, marque "Respeitar AutoCompletar = desativado: permitir que sites desabilitem o preenchimento automático".

Não precisei fazer nada de especial no meu formulário cshtml ASP, mas tinha um valor padrão no formulário para a caixa @ Html.EditorFor.

Espero que isso ajude e funcione para alguém. Como não encontrei nenhuma ajuda específica do Razor sobre esse problema na Web, pensei em adicioná-lo, pois descobri com a ajuda do link e das contribuições acima.

Doug
fonte