165

有没有办法防止 LastPass 浏览器扩展使用名为“用户名”的输入字段填写基于 HTML 的表单?

这是一个隐藏字段,因此我不希望任何软件将此字段用于其目的:

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

解决方案不应该像“重命名输入字段”。

4

16 回答 16

251

添加

data-lpignore="true"

输入字段为我禁用了灰色的 LastPass [...] 框。

来自LastPass.com

于 2017-07-08T10:02:42.320 回答
54

必须满足两个条件:

  1. 表单(不是元素)需要有autocomplete="off"属性
  2. Lastpass 用户需要启用此选项:
    • (老的)Settings > Advanced > Allow pages to disable autofill
    • (新的)Account Options > Extension Preferences > Advanced > Respect AutoComplete=off: allow websites to disable Autofill

所以这取决于用户和开发者。

于 2015-01-29T14:19:28.370 回答
43

对我有用的是在表单的 id 中包含单词“-search-”,例如<form id="affiliate-search-form">- 并且 lastpass 不会将其元素添加到表单输入中。它适用于更简单的东西,<form id="search">但不适用于<form id="se1rch">

于 2015-06-18T17:09:51.400 回答
18

我知道我在这里聚会迟到了,但是当我试图阻止 lastpass 破坏我的表格时,我发现了这一点。@takeshin 是正确的,因为自动完成是不够的。我最终做了下面的黑客只是为了隐藏符号。不漂亮,但我摆脱了图标。

如果有任何 lastpass 开发人员正在阅读本文,请给我们一个要使用的属性,这样我们就不必求助于这样的东西了。

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}
于 2015-04-06T14:26:29.667 回答
17

认为lastpass 尊重autocomplete="off"输入的属性,但我不是 100% 确定。

编辑 正如其他人指出的那样。这仅在用户已配置最后一次传递以兑现这一点时才有效。

于 2014-01-06T17:18:26.463 回答
15

对我来说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他们似乎忽略的-keywords:

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 行代码 :)

于 2016-12-22T10:09:48.260 回答
10

将“搜索”添加到输入 ID

<input type="text" name="user" id="user-search"/>
于 2015-10-20T15:56:52.330 回答
9

派对迟到了,但我刚刚通过修改表单实现了这一点:

<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 等到 domready 然后检查是否有任何可见的密码字段,因此无法隐藏或缩小上面的模拟字段。

于 2016-01-12T16:58:13.043 回答
6

这个 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");
}
于 2018-05-05T18:12:07.413 回答
6

对于 Lastpass 的最新 2019 年 10 月错误版本,这个简单的修复似乎是最好的。

添加

type="search"

到您的输入。

lastpass 例程检查type属性以确定如何处理其自动填充,并且它对type“搜索”的 html5 不执行任何操作。这个修复有点hacky,但它是一行更改,当他们修复错误的脚本时可以轻松删除。

注意:执行此操作后,如果某些浏览器选择了该type属性,您的输入可能会出现不同的样式。-webkit-appearance如果您观察到这一点,您可以通过设置浏览器特定的 CSS 属性和输入-moz-appearance来防止它发生'none'

于 2019-10-08T16:52:15.253 回答
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 更新

name由于 AngularJS 取决于具有属性的表单字段,以便 ngMessages 正确显示字段验证错误消息,我仍然遇到了上述问题。

最终,我能找到的防止 LastPass 在我的密码更改表单上填写密码字段的唯一解决方案是:

  1. 避免input[type=password]完全使用,并且
  2. 字段名称中没有“密码”

由于我需要能够在我的情况下正常提交表单,我仍然使用我原来的解决方案来“及时”更新字段名称。为了避免使用密码输入字段,我发现这个解决方案效果很好。

于 2018-01-17T22:04:48.860 回答
1

这对我有用,可以防止 lastpass 在 Chrome 中填充剃刀 @Html.EditorFor 框:

单击工具栏中的活动 LastPass 图标,然后转到帐户选项 > 扩展首选项。

在此屏幕上选中“不要覆盖已填写的字段”(在底部)

接下来,单击左侧的“高级”。

在此屏幕上选中“尊重自动完成=关闭:允许网站禁用自动填充”。

我不需要在我的 ASP cshtml 表单中做任何特别的事情,但我在 @Html.EditorFor 框的表单中确实有一个默认值。

我希望这对某人有所帮助和工作。我在网上找不到关于这个问题的任何 Razor 特定帮助,所以我想我会添加这个,因为我在上面的链接和贡献的帮助下找到了它。

于 2020-05-30T00:24:54.807 回答
1

对于偶然发现这一点的人 -autocomplete="new-password"密码字段会阻止 LastPass 填写密码,这与data-lpignore="true"完全禁用它相结合

于 2021-01-21T16:23:42.727 回答
1

2021 年 11 月更新

我注意到所有 LastPass 小部件都包装在 css-1obar3y 类的 div 中。

div.css-1obar3y {
  display: none!important;
}

非常适合我

于 2021-11-09T19:57:11.713 回答
0

尝试了 -search 重命名,但由于某种原因不起作用。对我有用的是以下内容:

  1. 将表单标记为自动完成 - autocomplete="off"
  2. 将表单字段输入类型更改为文本
  3. 向您的 css 添加一个新类以屏蔽输入,模拟密码字段
  4. CSS位:input.masker {-webkit-text-security:光盘;}

在最新版本的 FF 和 Chrome 中进行了尝试和测试。

于 2017-03-15T15:41:09.367 回答
0

type="hidden" autocomplete="off"

将此添加到我的输入中对我有用。(输入也有visibility: hiddencss)。

于 2021-02-02T20:51:52.530 回答