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