Eu criei um aplicativo Web que usa uma caixa de tags suspensa. Isso funciona muito bem em todos os navegadores, exceto no Chrome (versão 21.0.1180.89).
Apesar de ambos os input
campos E o form
campo ter o autocomplete="off"
atributo, o Chrome insiste em mostrar um histórico suspenso de entradas anteriores para o campo, o que está obliterando a lista de caixas de tags.
html
google-chrome
autocomplete
forms
Mr Fett
fonte
fonte
Respostas:
ATUALIZAR
Agora parece que o Chrome ignora os atributos
style="display: none;"
oustyle="visibility: hidden;
.Você pode alterá-lo para algo como:
Na minha experiência, o Chrome apenas preenche automaticamente o primeiro
<input type="password">
e o anterior<input>
. Então eu adicionei:Para o topo da
<form>
e o caso foi resolvido.fonte
display: none;
desaparecerá o elemento, nada sobre o preenchimento automático.Impedir o preenchimento automático de nome de usuário (ou email) e senha:
Impedir o preenchimento automático de um campo ( pode não funcionar ):
Explicação:
autocomplete
ainda funciona<input>
apesar de terautocomplete="off"
, mas você pode mudaroff
para uma sequência aleatória, comonope
.Outras "soluções" para desativar o preenchimento automático de um campo (não é o caminho certo para fazê-lo, mas funciona):
1
HTML:
JS (onload):
ou usando jQuery:
2)
HTML:
JS (onload):
ou usando jQuery:
Para adicionar mais de um campo usando o jQuery:
Trabalha em:
Chrome: mais de 49
Firefox: mais de 44
fonte
new-password
é uma boa captura para qualquer entrada oculta que na verdade não seja uma senha, obrigadoautocomplete="nope"
realmente trabalhou para mim, a menos que eu o adicione nos meus campos de formulário. Como eu posso tê-lo em qualquer um dos campos e, em seguida, esse campo não será preenchido automaticamente, mas o outro campo ainda será preenchido automaticamente, mas assim que eu coloco nos dois campos, os dois começam a ser preenchidos novamente.Parece que o Chrome agora ignora, a
autocomplete="off"
menos que esteja na<form autocomplete="off">
etiqueta.fonte
Abordagem moderna
Simplesmente faça sua entrada
readonly
e, em foco, remova-a. Essa é uma abordagem muito simples e os navegadores não preencherão asreadonly
entradas. Portanto, esse método é aceito e nunca será substituído por futuras atualizações do navegador.A próxima parte é opcional. Estilize sua entrada de acordo para que não pareça uma
readonly
entrada.EXEMPLO DE TRABALHO
fonte
modern approach
. Menos de 1% dos usuários no mundo tem o Javascript desativado. Portanto, honestamente, não vale a pena alguém acomodar um público tão pequeno quando a grande maioria dos sites confia no Javascript. Desenvolvo sites há muito tempo, e 100% dos meus sites usam Javascript e dependem muito dele. Se os usuários têm o Javascript desativado, isso é problema e escolha deles, não meu. Eles não poderão visitar ou usar pelo menos 90% dos sites on-line com ele desativado ... Seu voto negativo é completamente irrelevante.Para uma solução confiável, você pode adicionar este código à sua página de layout:
O Chrome respeita o preenchimento automático = desativado apenas quando há pelo menos um outro elemento de entrada no formulário com qualquer outro valor de preenchimento automático.
Isso não funcionará com campos de senha - eles são tratados de maneira muito diferente no Chrome. Consulte https://code.google.com/p/chromium/issues/detail?id=468153 para obter mais detalhes.
UPDATE: Bug fechado como "Não será corrigido" pelo Chromium Team em 11 de março de 2016. Veja o último comentário no meu relatório de bug originalmente arquivado , para obter uma explicação completa. TL; DR: use atributos de preenchimento automático semântico como autocomplete = "new-street-address" para evitar que o Chrome realize o preenchimento automático.
fonte
Bem, um pouco tarde para a festa, mas parece que há um pouco de mal-entendido sobre como
autocomplete
deve e não deve funcionar. De acordo com as especificações HTML, o agente do usuário (neste caso, Chrome) pode substituirautocomplete
:https://www.w3.org/TR/html5/forms.html#autofilling-form-controls:-the-autocomplete-attribute
Portanto, no caso do Chrome, os desenvolvedores disseram essencialmente "deixaremos isso para o usuário decidir em suas preferências se ele deseja
autocomplete
ou não funcionar. Se você não quiser, não ative no seu navegador" .No entanto, parece que isso é um pouco zeloso da parte deles, mas é assim que as coisas são. A especificação também discute as implicações potenciais de segurança de tal mudança:
Então, depois de experimentar a mesma frustração que todos os outros, encontrei uma solução que funciona para mim. É semelhante na veia ao
autocomplete="false"
respostas.Um artigo da Mozilla fala exatamente sobre esse problema:
https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
Portanto, o seguinte código deve funcionar:
E assim deve cada um dos seguintes:
O problema que vejo é que o agente do navegador pode ser inteligente o suficiente para aprender o
autocomplete
atributo e aplicá-lo na próxima vez em que visualizar o formulário. Se isso acontecer, a única maneira de ver ainda para resolver o problema seria mudar dinamicamente oautocomplete
valor atributo quando a página for gerada.Um ponto que vale a pena mencionar é que muitos navegadores ignoram as
autocomplete
configurações dos campos de login (nome de usuário e senha). Como o artigo da Mozilla afirma:Finalmente, um pouco de informação sobre se o atributo pertence ao
form
elemento ou aoinput
elemento. A especificação novamente tem a resposta:Assim. Colocá-lo no formulário deve ser aplicado a todos os campos de entrada. Colocá-lo em um elemento individual deve ser aplicado apenas a esse elemento (mesmo se não houver um no formulário). Se
autocomplete
não estiver definido, o padrão éon
.Sumário
Para desativar
autocomplete
em todo o formulário:Ou se você precisar fazer isso dinamicamente:
Para desativar
autocomplete
em um elemento individual (independentemente da configuração do formulário estar presente ou não)Ou se você precisar fazer isso dinamicamente:
E lembre-se de que certos agentes de usuários podem substituir até as tentativas mais difíceis de desativar
autocomplete
.fonte
A solução no momento é usar
type="search"
. O Google não aplica preenchimento automático a entradas com um tipo de pesquisa.Veja: https://twitter.com/Paul_Kinlan/status/596613148985171968
Atualização 04/04/2016: Parece que isso foi corrigido! Consulte http://codereview.chromium.org/1473733008
fonte
A versão 34 do Chrome agora ignora o
autocomplete=off
, veja isso .Muita discussão sobre se isso é bom ou ruim? Qual é a sua opinião?
fonte
O navegador não se preocupa com o preenchimento automático = desativado automaticamente ou até preenche credenciais no campo de texto errado?
Eu o corrigi definindo o campo de senha como somente leitura e ativá-lo quando o usuário clica nele ou usa a tecla tab nesse campo.
corrija o preenchimento automático do navegador: somente leitura e defina a escrita no foco (com o clique do mouse e tabulação nos campos)
Atualização: o Mobile Safari define o cursor no campo, mas não mostra o teclado virtual. Nova correção funciona como antes, mas lida com teclado virtual:
Demonstração ao vivo https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
By the way, mais informações sobre a minha observação:
Às vezes, percebo esse comportamento estranho no Chrome e Safari, quando existem campos de senha no mesmo formulário. Eu acho que o navegador procura um campo de senha para inserir suas credenciais salvas. Em seguida, ele preenche automaticamente o nome de usuário no campo de entrada semelhante a texto mais próximo, que aparece antes do campo de senha no DOM (apenas adivinhando devido à observação). Como o navegador é a última instância e você não pode controlá-lo, às vezes até o preenchimento automático = desativado não impediria o preenchimento de credenciais em campos incorretos, mas não no campo de usuário ou apelido.
fonte
Você pode usar
autocomplete="new-password"
Trabalha em:
fonte
TL; DR: informe ao Chrome que esta é uma nova entrada de senha e não fornecerá as antigas como sugestões de preenchimento automático:
autocomplete="off"
não funciona devido a uma decisão de design - muitas pesquisas mostram que os usuários têm muito mais tempo e mais difícil para hackear senhas se puderem armazená-las em um navegador ou gerenciador de senhas.A especificação de
autocomplete
mudou e agora suporta vários valores para facilitar o preenchimento automático de formulários de login:Se você não fornecer essas informações, o Chrome ainda tenta adivinhar e, quando o faz, ignora
autocomplete="off"
.A solução é que
autocomplete
também existem valores para os formulários de redefinição de senha:Você pode usar esse
autocomplete="new-password"
sinalizador para dizer ao Chrome para não adivinhar a senha, mesmo que ela tenha uma armazenada para este site.O Chrome também pode gerenciar senhas de sites diretamente usando a API de credenciais , que é um padrão e provavelmente terá suporte universal eventualmente.
fonte
Eu resolvi a luta sem fim com o Google Chrome com o uso de caracteres aleatórios. Quando você sempre processa o preenchimento automático com uma sequência aleatória, nunca se lembra de nada.
Espero que ajude a outras pessoas.
fonte
Autocomplete="Off"
não funciona mais.Tente usar apenas uma sequência aleatória em vez de
"Off"
, por exemploAutocomplete="NoAutocomplete"
Espero que ajude.
fonte
Visto que o chrome ignora
autocomplete="off"
, eu o resolvo de uma maneira estúpida, que está usando a "entrada falsa" para enganar o chrome para preenchê-lo, em vez de preencher o "real".Exemplo:
O Chrome preencherá a "entrada falsa" e, quando enviar, o servidor receberá o valor "entrada real".
fonte
Estou postando esta resposta para trazer uma solução atualizada para esse problema. Atualmente, estou usando o Chrome 49 e nenhuma resposta dada funciona para este. Também estou procurando uma solução para trabalhar com outros navegadores e versões anteriores.
Coloque este código no início do seu formulário
Em seguida, para o seu campo de senha real, use
Comente esta resposta se isso não estiver mais funcionando ou se você encontrar um problema com outro navegador ou versão.
Aprovado em:
fonte
para quem procura uma solução para isso, eu finalmente entendo.
O Chrome obedece apenas ao preenchimento automático = "desativado" se a página for uma página HTML5 (eu estava usando XHTML).
Eu converti minha página para HTML5 e o problema desapareceu (facepalm).
fonte
Altere o atributo do tipo de entrada para
type="search"
.O Google não aplica preenchimento automático a entradas com um tipo de pesquisa.
fonte
Até essa semana, as duas soluções abaixo pareciam funcionar no Chrome, IE e Firefox. Mas com o lançamento da versão 48 do Chrome (e ainda em 49), eles não funcionam mais:
A seguir, no elemento de entrada da senha:
autocomplete = "off"
Então, para corrigir isso rapidamente, primeiro tentei usar um grande truque para definir inicialmente o elemento de entrada da senha como desativado e, em seguida, usei um setTimeout na função de documento pronto para ativá-lo novamente.
Mas isso parecia tão louco e eu fiz mais algumas pesquisas e encontrei a resposta @tibalts em Desativando o preenchimento automático do Chrome . Sua resposta é usar autocomplete = "new-password" na entrada de senhas e isso parece funcionar em todos os navegadores (eu mantive minha correção número 1 acima neste estágio).
Aqui está o link na discussão do desenvolvedor do Google Chrome: https://code.google.com/p/chromium/issues/detail?id=370363#c7
fonte
autocomplete=off
é amplamente ignorado em navegadores modernos - principalmente devido a gerenciadores de senhas etc.Você pode tentar adicionar isso
autocomplete="new-password"
, não é totalmente suportado por todos os navegadores, mas funciona em algunsfonte
autocomplete="off"
geralmente está funcionando, mas nem sempre. Depende doname
do campo de entrada. Nomes como "endereço", 'email', 'nome' - serão preenchidos automaticamente (os navegadores acham que ajudam os usuários), quando campos como "código", "alfinete" - não serão preenchidos automaticamente (seautocomplete="off"
estiver definido)Meus problemas eram - o preenchimento automático estava mexendo com o auxiliar de endereço do Google
Corrigi-o renomeando-o
de
para
Testado no chrome 71.
fonte
Em vez de autocomplete = "off", use autocomplete = "false" ;)
from: https://stackoverflow.com/a/29582380/75799
fonte
Não faço idéia por que isso funcionou no meu caso, mas no chrome eu usei
autocomplete="none"
e o Chrome parou de sugerir endereços para o meu campo de texto.fonte
A partir do Chrome 42, nenhuma das soluções / hacks neste segmento (a partir de
2015-05-21T12:50:23+00:00
) funciona para desativar o preenchimento automático de um campo individual ou de todo o formulário.EDIT: Descobri que você realmente só precisa inserir um campo de email fictício em seu formulário (você pode ocultá-lo
display: none
) antes dos outros campos para impedir o preenchimento automático. Presumo que o chrome armazene algum tipo de assinatura de formulário em cada campo preenchido automaticamente e a inclusão de outro campo de email corrompa essa assinatura e impede o preenchimento automático.A boa notícia é que, como a "assinatura do formulário" é corrompida por isso, nenhum dos campos é preenchido automaticamente, portanto, nenhum JS é necessário para limpar os campos falsos antes do envio.
Resposta antiga:
A única coisa que achei viável ainda é inserir dois campos fictícios do tipo email e senha antes dos campos reais. Você pode configurá-los para
display: none
ocultá-los (não é inteligente o suficiente para ignorar esses campos):Infelizmente, os campos devem estar no seu formulário (caso contrário, os dois conjuntos de entradas são preenchidos automaticamente). Portanto, para que os campos falsos sejam realmente ignorados, você precisará de algumas JS para executar no formulário, para limpá-las:
Observe acima que limpar o valor com Javascript funciona para substituir o preenchimento automático. Portanto, se perder o comportamento adequado com o JS desativado for aceitável, você poderá simplificar tudo isso com um "polyfill" de preenchimento automático do JS para o Chrome:
fonte
Eu tive um problema semelhante em que o campo de entrada recebeu um nome ou um email. Defino o preenchimento automático = "desativado", mas o Chrome ainda força sugestões. Acontece que foi porque o texto do espaço reservado continha as palavras "nome" e "email".
Por exemplo
Eu consegui contornar isso colocando um espaço de largura zero nas palavras no espaço reservado. Chega de preenchimento automático do Chrome.
fonte
No Chrome 48 ou superior, use esta solução:
Coloque campos falsos antes de campos reais:
Ocultar campos falsos:
Você fez isso!
Além disso, isso funcionará para versões mais antigas.
fonte
autocomplete="off"
aform
etiqueta. Tente também colocar entradas falsas imediatamente após aform
tag.Após o chrome v. 34, a configuração
autocomplete="off"
em<form>
tag não funcionaFiz as alterações para evitar esse comportamento irritante:
name
eid
a senhapasswordInput
)(Até agora, o Chrome não colocará a senha salva na entrada, mas o formulário agora está quebrado)
Por fim, para que o formulário funcione, coloque esse código em execução quando o usuário clicar no botão enviar ou sempre que desejar ativar o envio do formulário:
No meu caso, eu costumava ter
id="password" name="password"
a entrada de senha, então as coloquei de volta antes de acionar a submissão.fonte
Depois de tentar todas as soluções, aqui está o que parece estar funcionando para a versão chrome: 45, com o formulário com o campo senha:
fonte
Acabei de atualizar para o Chrome 49 e a solução de Diogo Cid não funciona mais.
Fiz uma solução alternativa oculta e removendo os campos em tempo de execução após o carregamento da página.
Agora, o Chrome ignora a solução original, aplicando as credenciais ao primeiro campo exibido
type="password"
e aotype="text"
campo anterior , por isso ocultei os dois campos usando CSSvisibility: hidden;
Eu sei que pode não parecer muito elegante, mas funciona.
fonte
Eu achei esta solução a mais apropriada:
Ele deve ser carregado depois que o dom estiver pronto ou depois que o formulário for renderizado.
fonte
Embora eu concorde que o preenchimento automático deve ser uma opção do usuário, há momentos em que o Chrome é muito zeloso com ele (outros navegadores também podem ser). Por exemplo, um campo de senha com um nome diferente ainda é preenchido automaticamente com uma senha salva e o campo anterior é preenchido com o nome de usuário. Isso é particularmente ruim quando o formulário é um formulário de gerenciamento de usuários de um aplicativo Web e você não deseja que o preenchimento automático o preencha com suas próprias credenciais.
O Chrome ignora completamente o preenchimento automático = "desativado" agora. Embora os hacks JS possam funcionar, encontrei uma maneira simples que funciona no momento em que escrevi:
Defina o valor do campo de senha como o caractere de controle 8 (
"\x08"
em PHP ou
HTML). Isso impede que o Chrome preencha automaticamente o campo porque ele possui um valor, mas nenhum valor real é inserido porque esse é o caractere de backspace.Sim, isso ainda é um hack, mas funciona para mim. YMMV.
fonte
form
para criar novos e editar usuários existentes, simplesmente substituindoinput
valores via JS removemos o preenchimento automático.