Detener LastPass rellenando un formulario

¿Hay alguna manera de evitar que la extensión del navegador LastPass complete un formulario basado en HTML con un campo de entrada con el nombre “nombre de usuario”?

Este es un campo oculto, por lo que no quiero que ningún software use este campo para sus propósitos:

 

La solución no debería ser como “cambiar el nombre del campo de entrada”.

Añadiendo

 data-lpignore="true" 

a un campo de entrada inhabilitó el cuadro […] gris LastPass para mí.

Procedente de LastPass.com

Lo que funcionó para mí es tener la palabra “-search-” en el id del formulario, algo así como

– y lastpass no agrega sus elementos a las entradas del formulario. Funciona con algo más simple como

pero no funciona con

Dos condiciones deben cumplirse:

  1. La forma (no el elemento) necesita tener el atributo autocomplete="off"
  2. Lastpass usuario necesita tener esta opción habilitada: Settings > Advanced > Allow pages to disable autofill

Entonces esto depende tanto del usuario como del desarrollador.

Sé que llego tarde a la fiesta aquí, pero encontré esto cuando estaba tratando de evitar que el último paso arruine mis formularios. @takeshin tiene razón en que la autocompleta no es suficiente. Terminé haciendo el truco más abajo solo para ocultar el símbolo. No es bonito, pero me deshice del ícono.

Si algún desarrollador último paso está leyendo esto, por favor, danos un atributo para usar, para que no tengamos que recurrir a cosas como esta.

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

Creo que lastpass respeta el atributo autocomplete="off" para las entradas, pero no estoy 100% seguro.

EDITAR Como otros han señalado. esto solo funciona si el usuario tiene la última pasada configurada para cumplir esto.

Para mí funciona type=search que es un poco igual a text o usa role=note .

Puede verificar LastPass-JavaScript pero es enorme, puede que encuentre alguna solución allí, por lo que vi solo revisan 4 tipos de entrada, por lo que input type=search sería una solución:

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

También esos son los role -palabras clave que parecen 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":` 

onloadwff.js LastPass ‘ onloadwff.js , me preparo para 26.960 líneas de código 🙂

Agregue “búsqueda” para ingresar la identificación

  

Un poco tarde para la fiesta, pero acabo de lograr esto modificando el formulario con:

 

Supongo que estos tontos piensan que es un formulario de búsqueda. ¡Sin embargo, esto no funciona para los campos de contraseña! Lastpass ignora el campo de nombre en este caso.

La única forma en que logré hacer esto es agregar lo siguiente directamente en la parte superior del formulario:

 

Provoca un desagradable parpadeo pero elimina las tonterías de autocompletar, aunque muestra el widget “generar contraseña”. LastPass espera hasta que esté listo y luego verifica si hay campos de contraseña visibles, por lo que no es posible ocultar o reducir los campos de simulación anteriores.

Este código de estilo ES6 fue útil para mí ya que agregó data_lpignore a todos mis controles de entrada:

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

Para acceder a un control de ENTRADA específico, uno podría escribir algo como esto:

 document.getElementById('userInput').setAttribute("data_lpignore", "true"); 

O bien, puedes hacerlo por nombre de clase:

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

Intenté el cambio de búsqueda -search pero por alguna razón eso no funcionó. Lo que funcionó para mí es lo siguiente:

  1. marcar formulario para autocompletar – autocompletar = “off”
  2. cambiar el tipo de entrada del campo de formulario a texto
  3. agrega una nueva clase a tu css para enmascarar la entrada, simula un campo de contraseña
  4. css bit: input.masker {-webkit-text-security: disco; }

Probado y probado en las últimas versiones de FF y Chrome.

Ninguna de las opciones aquí impidió que LastPass completara automáticamente mis campos de formulario por desgracia. Tomé un enfoque más crítico para el problema y, de forma asincrónica, establecí los atributos del name entrada a través de JavaScript. La siguiente función dependiente de jQuery (invocada desde el controlador de eventos onsubmit del formulario) hizo el truco:

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

En la forma, simplemente utilicé tmp-name atributos tmp-name en lugar de los atributos de name equivalentes. Ejemplo: