Зупиніть LastPass заповнювати форму


130

Чи є спосіб запобігти заповненню розширення браузера LastPass заповнення форми на базі HTML із полем введення з назвою "ім'я користувача"?

Це приховане поле, тому я не хочу, щоб жодне програмне забезпечення використовувало це поле для своїх цілей:

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

Рішення не повинно бути таким, як "перейменувати поле введення".


12
Якщо поле приховано, краще встановити, type="hidden"а не заховати його за допомогою CSS
Reeno

2
здається, ви прийняли неправильну відповідь, оскільки вона не працює ... те, що запропонував Олександр, працює, тож ви можете змінити вибір;)
Домінік

2
супер просто $(':input').attr('data-lpignore', true);Це все. Це дозволить відключити заповнення форми пропускної форми для всіх форм.
Adarsh ​​Madrecha

Відповіді:


170

Додавання

data-lpignore="true"

до поля введення вимкнено сіре поле LastPass [...] для мене.

Джерело від LastPass.com


5
Це має бути вірною відповіддю. Здається, LP поважає цей атрибут і не вимагає жодних шалених "пошукових" імен, ідентифікаторів чи ролей.
Корнеліу

28
це видаляє лише сіру піктограму, але не зупиняє LastPass ігнорувати автозаповнення
Arnis Juraga

26
це НЕ має бути прийнятою відповіддю, оскільки це НЕ "Зупиніть LastPass заповнювати форму"
Conrad Warhol

3
За посиланням, що надається у відповіді ( lastpass.com/support.php?cmd=showfaq&id=10512 ), LP лише забороняє відображати значок у цьому полі
Kunal

47

Дві умови повинні бути виконані:

  1. Форма (не елемент) повинна матиautocomplete="off" атрибут
  2. Користувачеві Lastpass потрібно включити цю опцію: Settings > Advanced > Allow pages to disable autofill

Тож це залежить і від користувача, і від розробника.


39

Для мене працювало те, що слово "-search-" в ідентифікаторі форми щось подібне <form id="affiliate-search-form">- і lastpass не додає його елементів до входів форми. Він працює з чимось більш простим, як, <form id="search">але не працює<form id="se1rch">


8
Також придушується, якщо: - якщо назва поля або атрибут класу містить слова "пошук" або "srch" - якщо ідентифікатор форми або ім'я atttribute містить "пошук" - атрибут ролі форми є "пошук"
e1v

1
На жаль, це не працює для полів паролів. Ефективно, форма все ще автоматично заповнюється. У моєму випадку додавання searchяк класів до імені користувача та пароля відключило кнопку зірочки в полі імені користувача, але поле пароля залишається таким, як є.
Майк Рокетт

2
Так, я можу підтвердити, що поля пароля все ж заповнюються при використанні цього підходу. :-(
Саймон Схід

7
Це більше не стосується поточних версій Lastpass. Тож цю відповідь слід усунути.
Героселохім

4
Додати -search- до ідентифікатора одного вхідного поля працює для мене на Chrome 51, LastPass 4.1.17. Додавання його до форми не допомагає.
Alex2php

18

Я знаю, що я запізнююсь на вечірці тут, але я виявив це, коли намагався не допустити, щоб останній мотив міняв мої форми. @takeshin вірно в тому, що автозаповнення недостатньо. Я в кінцевому підсумку робив хак внизу, просто щоб приховати символ. Не дуже, але я позбувся ікони.

Якщо будь-який розробник Lastpass читає це, будь ласка, дайте нам атрибут для використання, тому нам не доведеться вдаватися до подібних речей.

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

2
Це єдине рішення, яке працювало для мене (навіть при грі з налаштуваннями lastpass, які я фактично не очікую, що мій користувач все одно зробить), хоча це суперечить мені, якщо я встановив власні background-imageполя введення (я люблю ставити "ясно" кнопки »на полях введення) - в цьому випадку , що також працювали для мене були просто установка background-imageі background-positionз !importantперевизначити LastPass стилю вбудованого.
Guss

Дуже креативне мислення! Дякую за це!
Говард

18

Я думаю, що Lastpass шанує autocomplete="off"атрибут для входів, але я не впевнений на 100%.

EDIT Як зазначали інші. це працює лише в тому випадку, якщо користувач востаннє пройшов конфігурацію для цього.


20
Так, але не за замовчуванням: helpdesk.lastpass.com/extension-preferences/advanced
Марко

12
Я можу підтвердити, що Lastpass не вшановує autocomplete="off"на рівні форми. Це просто витрачало мені годину часу на розробку форми "редагувати користувача", яка відображала неправильну адресу електронної пошти. У налаштуваннях останнього проходу є опція "не перезаписувати вже заповнені поля", що дуже допомагає.
Джейсон

7
Як заявив Марко, вам потрібно активізувати таку поведінку. Настройки-> додатково-> Поважайте автозаповнення = викл: дозволяє веб - сайти , щоб відключити автозаповнення
Dan

як ви обійти це в останньому проході?
Crash893

14

Для мене працював або 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 рядків коду :)


5
Я спробував усі відповіді вище і type=searchєдине, що працює для мене.
Райан Кінг

1
+1, мабуть, використання type=search- це єдиний спосіб запобігти автозаповненню незалежно від стану налаштування LastPass "Поважати автозаповнення = вимкнено".
johnnyRose

Спробував додавання role="note"або type="search". Жоден не працював над останнім Chrome і останнім пропуском.
Микита 웃

здається, що lpignoreзнову працює, https://jsfiddle.net/78z0L1sa/3/
зіпсуй

OMG, це дратує, LastPass перетворював мій тип = поле тексту для тексту в тип = пароль, і на цьому конкретному екрані потрібно було побачити пароль, потім LastPass додав пароль сайту, а не правильний пароль, без того, щоб користувач знав, коли вони його зберегли. була зміна облікових даних та розрив їх зв’язків з іншими системами. Lpignore, видаливши лише іконку, інші рішення вимагали взаємодії з користувачем, що не ідеально. Нарешті, зміна типу для пошуку працювала; хоча я ненавиджу це робити через чуже програмне забезпечення. У будь-якому разі, голосуйте за це.
Джейсон Мартін

10

Додайте "пошук" до вхідного ідентифікатора

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

1
Добре працює для мене. Тестовано на останньому Chrome. Це трохи хак, але не такий потенційно зламаний, як інші, тому я піду на це.
Тедд Хансен

6

Трохи запізнився на вечірку, але я щойно досяг цього, змінивши форму за допомогою:

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

Я думаю, що це дурні не вникають у думку, що це форма пошуку. Однак це не працює для полів паролів! 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 чекає, поки відкриється, а потім перевіряє, чи є видимі поля пароля, тому приховати або зменшити макетні поля вище не можна.


5

Для останнього випуску Lastpass у жовтні 2019 року цей простий виправлення здається найкращим.

Додайте

type="search"

на ваш внесок.

Програма lastpass перевіряє typeатрибут, щоб визначити, що робити з його автозаповненням, і він нічого не робить на цьому html5type "пошуку". Звичайно, це м'яко хакі, але це зміна однієї лінії, яку можна легко видалити, коли вони виправлять свій помилковий сценарій.

Примітка. Після цього, деякі веб-переглядачі можуть відображатись, що деякі вкладки будуть вкладені по-різному, якщо вони знайдуть typeатрибут. Якщо ви помітили це, ви можете запобігти цьому шляхом установки браузера специфічних властивостей CSS -webkit-appearanceі -moz-appearanceдо 'none'на вашому вході.


4

Цей код стилю ES6 був корисним для мене, оскільки він додав дані-lpignore до всіх моїх елементів керування введенням:

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

Щоб отримати доступ до певного елемента INPUT, можна написати щось подібне:

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

Або ви можете це зробити за назвою класу:

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

1

Жоден із варіантів тут (автозаповнення, дані-lpignore тощо) не заважав LastPass автоматично заповнювати мої поля форми. Я застосував більш глибокий підхід до проблеми і асинхронно встановив вхідні nameатрибути замість JavaScript. Наступна функція, що залежить від jQuery (викликається від форми обробки подання події форми), зробила трюк:

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>

Оновити 2019-03-20

Я все ще зіткнувся з труднощами з вищезазначеним через AngularJS залежно від полів форми, що мають nameатрибути для того, щоб ngMessages правильно подав повідомлення про помилки перевірки поля.

Зрештою, єдине рішення, яке я міг знайти, щоб запобігти заповненню LastPass полями паролів у моїй формі зміни пароля:

  1. Уникайте використання input[type=password]повністю І
  2. щоб у назві поля не було "пароля"

Оскільки в моєму випадку мені потрібно нормально надсилати форму, я все-таки використовував своє оригінальне рішення, щоб оновити назви полів "вчасно". Щоб уникнути використання полів введення пароля, я знайшов, що це рішення спрацювало дуже добре.


0

Спробував перейменувати-шукати, але чомусь це не спрацювало. Що для мене спрацювало наступне:

  1. маркувати форму для автозаповнення - autocomplete = "вимкнено"
  2. змінити тип введення поля форми на текст
  3. додати новий клас у свій css, щоб замаскувати введення, імітує поле пароля
  4. css bit: input.masker {-webkit-text-security: disk; }

Перепробовано та протестовано в останніх версіях FF та Chrome.


0

Ось що для мене спрацювало, щоб запобігти заповненню бритви @ Html.Editor для Lastpass для Chrome:

Клацніть активну піктограму LastPass на панелі інструментів, а потім перейдіть до Опції облікового запису> Налаштування розширення.

На цьому екрані встановіть прапорець "Не перезаписувати вже заповнені поля" (внизу)

Далі натисніть "розширений" зліва.

На цьому екрані встановіть прапорець "Поважати автозаповнення = вимкнено: дозволити веб-сайтам відключити автозаповнення".

У моїй формі ASP cshtml мені не потрібно було робити нічого особливого, але у мене було значення за замовчуванням у формі для вікна @ Html.EditorFor.

Я сподіваюся, що це комусь допомагає і працює. Я не зміг знайти в Інтернеті будь-якої конкретної довідки щодо бритви щодо цієї проблеми, тому я подумав би додати це, оскільки зрозумів це за допомогою наведеного вище посилання та внеску.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.