有没有办法阻止LastPass浏览器扩展使用名称为“username”的输入字段填写基于HTML的表单?
这是一个隐藏字段,因此我不希望任何软件将此字段用于其目的:
<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">
解决方案不应该像“重命名输入字段”。
答案 0 :(得分:105)
答案 1 :(得分:37)
必须满足两个条件:
autocomplete="off"
属性Settings > Advanced > Allow pages to disable autofill
所以这取决于用户和开发者。
答案 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重命名,但由于某种原因无效。对我有用的是:
在最新版本的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>
我仍然遇到以上因AngularJS而导致的困难,具体取决于具有name
属性的表单字段,以便ngMessages正确显示字段验证错误消息。
最终,我能找到阻止LastPass在我的密码更改表单上填写密码字段的唯一解决方案是:
input[type=password]
,AND 由于我需要能够在我的情况下正常提交表单,我仍然使用我原来的解决方案来“及时”更新字段名称。为了避免使用密码输入字段,我发现this solution非常好用。
答案 13 :(得分:0)
这是我的工作,它可以防止lastpass在Chrome中填充剃刀@ Html.EditorFor框:
单击工具栏中的活动LastPass图标,然后转到“帐户选项”>“扩展程序首选项”。
在此屏幕上,选中“不要覆盖已经填充的字段”(在底部)
下一步,单击左侧的“高级”。
在此屏幕上,选中“禁止自动填充=关闭:允许网站禁用自动填充”。
我不需要在ASP cshtml表单中做任何特殊的事情,但是在@ Html.EditorFor框的表单中确实有一个默认值。
我希望这会有所帮助并为某人工作。我在网上找不到针对该问题的任何Razor特定的帮助,所以我想添加一下,因为我是在上面的链接和贡献的帮助下找到的。
答案 14 :(得分:0)
type="hidden" autocomplete="off"
将此添加到我的输入中对我有用。 (输入也有 visibility: hidden
css)。