Остановить 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 07

2
похоже, что вы приняли неправильный ответ, так как он не работает ... то, что предложил Александр, работает, так что вы можете изменить свой выбор;)
— Доминик

2
супер просто $(':input').attr('data-lpignore', true);Вот и все. Это приведет к заполнению всех форм lastpass.
— Адарш Мадреча

Ответы:


170

Добавление

data-lpignore="true"

в поле ввода отключил для меня серый ящик LastPass [...].

Источник с LastPass.com


5
Это должен быть правильный ответ. LP, похоже, уважает этот атрибут и не требует никаких сумасшедших «поисковых» имен, идентификаторов или ролей.
— Corneliu

28
это удаляет только серый значок, но не мешает LastPass игнорировать автозаполнение ввода
— Арнис Джурага

26
это НЕ ДОЛЖНО быть принятым ответом, так как это НЕ «останавливает LastPass для заполнения формы»
— Конрад Уорхол,

3
По ссылке, приведенной в ответе ( lastpass.com/support.php?cmd=showfaq&id=10512 ), LP только запрещает отображение значка в этом поле
— Кунал

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
Также он подавляется, если: - если имя поля или атрибут класса содержит слова «search» или «srch» - если идентификатор формы или атрибут имени содержат «search» - атрибут роли формы равен «search»
— e1v

1
К сожалению, это не работает для полей пароля. Фактически, форма по-прежнему заполняется автоматически. В моем случае добавление searchas классов к имени пользователя и паролю отключило кнопку звездочки в поле имени пользователя, но поле пароля осталось как есть.
— Майк Рокетт,

2
Да, я могу подтвердить, что поля пароля по-прежнему заполнены при использовании этого подхода. :-(
— Саймон Ист

7
Это больше не относится к текущим версиям Lastpass. Так что этот ответ следует удалить.
— Heroselohim

4
Добавление -search- к идентификатору одного поля ввода работает для меня в Chrome 51, LastPass 4.1.17. Добавление в форму не помогает.
— Alex2php 06

18

Я знаю, что опаздываю на вечеринку, но я обнаружил это, когда пытался помешать lastpass испортить мои формы. @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%.

ИЗМЕНИТЬ Как отмечали другие. это работает только в том случае, если пользователь настроил последний проход для соблюдения этого.


20
Да, но не по умолчанию: helpdesk.lastpass.com/extension-preferences/advanced
— Marco,

12
Я могу подтвердить, что lastpass не соблюдает autocomplete="off"на уровне формы. Это просто потратило час времени на разработку формы «редактирования пользователя», которая показывала неправильный адрес электронной почты. В настройках lastpass есть опция «не перезаписывать уже заполненные поля», что очень помогает.
— Джейсон

7
Как сказал Марко, вам нужно активировать это поведение. Preferences-> Advanced-> Respect AutoComplete = off: разрешить веб-сайтам отключать автозаполнение
— Дэн,

как обойти это в lastpass?
— 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 «Respect autocomplete = off».
— johnnyRose 09

Пробовал добавлять role="note"или type="search". Никто не работал с последней версией Chrome и последней версией lastpass.
— Никита 웃

кажется, lpignoreснова работает, https://jsfiddle.net/78z0L1sa/3/
— поиграйте

OMG, это раздражает, LastPass преобразовывал мое поле type = text password в type = password, и на этом конкретном экране пароль должен был быть виден, затем 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атрибут, чтобы определить, что делать с его автозаполнением, и ничего не делает с этим html5 type"поиска". Конечно, это слегка взломано, но это изменение в одну строку, которое можно легко удалить, когда они исправят свой ошибочный сценарий.

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


4

Этот код стиля ES6 был мне полезен, поскольку он добавил data-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

К сожалению, ни один из вариантов (автозаполнение, data-lpignore и т. Д.) Не помешал 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>

Обновление 2019-03-20

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

В конце концов, единственное решение, которое я смог найти для предотвращения заполнения полей пароля LastPass в моей форме смены пароля, заключалось в следующем:

  1. Избегайте использования input[type=password]полностью, И
  2. не иметь "пароль" в имени поля

Поскольку в моем случае мне нужно иметь возможность отправлять форму в обычном режиме, я по-прежнему использовал свое оригинальное решение для обновления имен полей «как раз вовремя». Чтобы избежать использования полей ввода пароля, я обнаружил, что это решение работает очень хорошо.


0

Пробовал переименование -search, но по какой-то причине это не сработало. Для меня сработало следующее:

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

Испытано и протестировано в последних версиях FF и Chrome.


0

Вот что сработало для меня, чтобы не дать lastpass заполнить поле бритвы @ Html.EditorFor в Chrome:

Щелкните активный значок LastPass на панели инструментов, затем перейдите в Параметры учетной записи> Настройки расширения.

На этом экране установите флажок «Не перезаписывать поля, которые уже заполнены» (внизу)

Затем нажмите «Дополнительно» слева.

На этом экране установите флажок «Уважение AutoComplete = off: разрешить веб-сайтам отключать автозаполнение».

Мне не нужно было делать ничего особенного в моей форме ASP cshtml, но у меня было значение по умолчанию в форме для поля @ Html.EditorFor.

Я надеюсь, что это поможет и сработает для кого-то. Мне не удалось найти в Интернете справку по этой проблеме, относящуюся к Razor, поэтому я подумал, что добавлю это, так как понял это с помощью приведенной выше ссылки и материалов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.