Остановка LastPass для заполнения формы
есть ли способ предотвратить расширение браузера LastPass от заполнения HTML-формы с полем ввода с именем "Имя пользователя"?
это скрытое поле, поэтому я не хочу, чтобы какое-либо программное обеспечение использовало это поле для своих целей:
<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">
решение не должно быть похоже на "переименовать поле ввода".
11 ответов:
добавлять
data-lpignore="true"в поле ввода отключен серый LastPass [...] коробка для меня.
получены из LastPass.com
то, что сработало для меня, имеет слово "- поиск - " в идентификаторе формы, что-то вроде
<form id="affiliate-search-form">- и lastpass не добавляет свои элементы на входы формы. Он работает с чем-то более простым, как<form id="search">но не работает с<form id="se1rch">
должны быть выполнены два условия:
- The форма (Не элемент) должен иметь
autocomplete="off"атрибут- Lastpass пользователь должен иметь эту опцию включена:
Settings > Advanced > Allow pages to disable autofillТак что это зависит как от пользователя, так и от разработчика.
Я знаю, что опаздываю на вечеринку здесь, но я нашел это, когда пытался остановить lastpass от разрушения моих форм. @takeshin является правильным в том, что автозаполнение не хватает. Я закончил тем, что сделал Хак ниже, чтобы скрыть символ. Не очень красиво, но я избавился от иконы.
Если какие-либо разработчики lastpass читают это, пожалуйста, дайте нам атрибут для использования, поэтому нам не нужно прибегать к подобным вещам.
form[autocomplete="off"] input[type="text"] { background-position: 150% 50% !important; }
Я думаю lastpass чтит
autocomplete="off"атрибут для входных данных, но я не уверен на 100%.EDIT Как указывали другие. это работает только в том случае, если пользователь имеет последний проход, настроенный для выполнения этого.
для меня работал либо
type=searchчто вроде как равноtextили черезrole=note.вы можете проверить LastPass-JavaScript, но он огромен, может быть, вы можете найти там обходной путь, из того, что я видел, они проверяют только 4 типа ввода, поэтому
input type=searchбыл бы один обходной путь:!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))и это
role-ключевые слова, которые они, кажется, игнорируют: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":`Я проверил LastPass'
onloadwff.js, подготовиться к 26.960 строк кода :)
немного поздно на вечеринку, но я только что добился этого, изменив форму с помощью:
<form autocomplete="off" name="lastpass-disable-search">Я думаю, что это дураки lastpass в думая, что это форма поиска. Однако это не работает для полей пароля! LastPass не игнорирует поле " имя " в данном случае.
единственный способ, которым мне удалось это сделать, это добавить следующее прямо в верхней части формы:
<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>это вызывает неприятный мерцание, но удаляет автозаполнение ерунды-хотя это по-прежнему отображается виджет "создать пароль". LastPass ждет, пока domready, а затем проверяет, есть ли какие-либо видимые поля пароля, поэтому невозможно скрыть или сжать фиктивные поля выше.
этот код стиля ES6 был полезен для меня, поскольку он добавил data_lpignore для всех моих элементов управления вводом:
const elements = document.getElementsByTagName("INPUT"); for (let element of elements) { element.setAttribute("data_lpignore", "true"); }чтобы получить доступ к определенному элементу управления вводом, можно написать что-то вроде этого:
document.getElementById('userInput').setAttribute("data_lpignore", "true");или, вы можете сделать это название класса:
const elements = document.getElementsByClassName('no-last-pass'); for (let element of elements) { element.setAttribute("data_lpignore", "true"); }
попробовал переименовать-search, но по какой-то причине это не сработало. То, что сработало для меня, заключается в следующем:
- выбрать форму для автозаполнения - автозаполнение="выкл"
- измените тип ввода поля формы на text
- добавить новый класс в css, чтобы замаскировать вход, имитирует поле пароля
- css бит: вход.ряженый { - webkit-текст-безопасность: диск; }
пробовал и проверял в последних версиях FF и Chrome.
ни один из вариантов здесь не помешал LastPass автоматически заполнять поля моей формы, к сожалению. Я взял более кувалдой подход к проблеме и асинхронно установил вход
nameатрибуты через JavaScript вместо этого. Следующая зависящая от jQuery функция (вызываемая из обработчика событий onsubmit формы) сделала трюк: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);в форме, я просто использовать
tmp-nameатрибуты вместо эквивалентаnameатрибуты. Пример:<form id="myForm" method="post" action="/someUrl"> <input name="username" type="text"> <input tmp-name="password" type="password"> </form>