停止LastPass填写表格

时间:2014-01-06 16:49:41

标签: html forms lastpass

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

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

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

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

15 个答案:

答案 0 :(得分:105)

添加

data-lpignore="true"

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

来自LastPass.com

答案 1 :(得分:37)

必须满足两个条件:

  1. 表单(不是元素)需要autocomplete="off"属性
  2. Lastpass用户需要启用此选项:Settings > Advanced > Allow pages to disable autofill
  3. 所以这取决于用户和开发者。

答案 2 :(得分:35)

对我来说有用的是#34; -search - &#34;在表单的id中,类似<form id="affiliate-search-form"> - 并且lastpass不会将其元素添加到表单输入中。它适用于<form id="search">之类的更简单但不适用<form id="se1rch">

的内容

答案 3 :(得分:16)

我知道我在这里参加派对已经很晚了,但是当我试图阻止最后一次破坏我的表格时,我发现了这一点。 @takeshin是正确的,因为自动完成是不够的。我最终只是为了隐藏符号而在下面进行黑客攻击。不漂亮,但我摆脱了图标。

如果有任何lastpass开发人员正在阅读本文,请给我们一个使用的属性,所以我们不必诉诸这样的东西。

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

答案 4 :(得分:14)

认为 lastpass尊重输入的autocomplete="off"属性,但我不是百分百肯定。

修改 正如其他人所指出的那样。这仅在用户配置了最后一个通道时才有效。

答案 5 :(得分:10)

对我来说,工作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行代码:)

答案 6 :(得分:6)

将“搜索”添加到输入ID

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

答案 7 :(得分:4)

参加聚会的时间已晚,但我刚刚通过修改表格来实现这一目标:

<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>

它会导致令人讨厌的闪烁,但会删除自动填充废话 - 尽管它仍会显示&#34;生成密码&#34;小部件。 LastPass等到domready然后检查是否有可见的密码字段,因此无法隐藏或缩小上面的模拟字段。

答案 8 :(得分:3)

对于最新的Lastpass漏洞发布于2019年10月,此简单修复似乎是最好的。

添加

type="search"

输入内容。

lastpass例程检查type属性以确定如何执行其自动填充,并且对html5 type的“搜索”无效。当然,这确实有点hacky,但这是一行更改,当他们修复错误的脚本时可以很容易地将其删除。

请注意,执行此操作后,如果某些浏览器选择了type属性,则输入的样式可能会有所不同。如果观察到这种情况,可以通过在输入上将浏览器特定的CSS属性-webkit-appearance-moz-appearance设置为'none'来防止发生这种情况。

答案 9 :(得分:2)

这个ES6样式代码对我有帮助,因为它将 data-lpignore 添加到我的所有输入控件中:

#

要访问特定的INPUT控件,可以编写如下内容:

# 82 "lexer.mll"

或者,您可以按类名进行操作:

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

答案 10 :(得分:1)

对于偶然发现此问题的人 - 密码字段上的 autocomplete="new-password" 阻止 LastPass 填写密码,与 data-lpignore="true" 结合使用完全禁用它

答案 11 :(得分:0)

试过-search重命名,但由于某种原因无效。对我有用的是:

  1. 将表单标记为自动填充 - 自动填充=&#34;关闭&#34;
  2. 将表单字段输入类型更改为文本
  3. 在css中添加一个新类来屏蔽输入,模拟密码字段
  4. css位:input.masker { -webkit-text-security:disc; }
  5. 在最新版本的FF和Chrome中试用并测试。

答案 12 :(得分:0)

此处没有任何选项(autocomplete,data-lpignore等)阻止LastPass自动填充我的表单字段。我对问题采取了更多的大锤方法,并通过JavaScript异步设置输入name属性。以下依赖于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],AND
  2. 在字段名称中没有'密码'
  3. 由于我需要能够在我的情况下正常提交表单,我仍然使用我原来的解决方案来“及时”更新字段名称。为了避免使用密码输入字段,我发现this solution非常好用。

答案 13 :(得分:0)

这是我的工作,它可以防止lastpass在Chrome中填充剃刀@ Html.EditorFor框:

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

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

下一步,单击左侧的“高级”。

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

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

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

答案 14 :(得分:0)

type="hidden" autocomplete="off"

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