有没有办法防止 LastPass 浏览器扩展插件用名为“ username”的输入字段填写基于 HTML 的表单?
这是一个隐藏字段,因此我不希望任何软件使用这个字段来实现它们的目的:
<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">
解决方案不应该像“重命名输入字段”那样。
我 好好想想上次通过荣誉的 autocomplete="off"属性的输入,但我不是100% 肯定。
autocomplete="off"
剪辑 正如其他人指出的那样,这只有在用户已经配置了最后一次通行证才能正常工作。
必须满足两个条件:
Settings > Advanced > Allow pages to disable autofill
Account Options > Extension Preferences > Advanced > Respect AutoComplete=off: allow websites to disable Autofill
所以这取决于用户和开发人员。
我知道我迟到了,但我发现了这个当我试图阻止最后通行证毁了我的表格。@ takeshin 是正确的,因为自动补全是不够的。我最后做了下面的黑客,只是为了隐藏符号。虽然不怎么样,但我摆脱了那个标志。
如果任何 lastpass 开发人员正在阅读这篇文章,请给我们一个要使用的属性,这样我们就不必求助于这样的东西。
form[autocomplete="off"] input[type="text"] { background-position: 150% 50% !important; }
对我有效的方法是在表单的 id 中使用单词“-search-”,比如 <form id="affiliate-search-form">,而 lastpass 不会将其元素添加到表单输入中。它适用于类似 <form id="search">的简单程序,但不适用于 <form id="se1rch">
<form id="affiliate-search-form">
<form id="search">
<form id="se1rch">
将“ search”添加到输入 id
<input type="text" name="user" id="user-search"/>
虽然有点晚了,但我刚刚通过修改表单达到了这个目的:
<form autocomplete="off" name="lastpass-disable-search">
我想这些傻瓜最后会认为这是一个搜索表单。但是,这不适用于密码字段!在这种情况下,Lastpass 会忽略 name 字段。
我做到这一点的唯一方法是在表单的顶部直接添加以下内容:
<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,然后检查是否有任何可见的密码字段,因此不可能隐藏或缩小上面的模拟字段。
对我来说,无论是工作的 type=search,这是有点等于 text或使用 role=note。
type=search
text
role=note
你可以检查 LastPass-JavaScript,但它很大,也许你可以找到一些解决方案,从我看到的他们只检查4个输入类型,所以 input type=search将是一个解决方案:
input type=search
!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))
这些也是他们似乎忽略的 role关键词:
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行代码:)
onloadwff.js
尝试了-搜索重命名,但由于某些原因不起作用:
在最新版本的 FF 和 Chrome 中进行了测试。
添加
data-lpignore="true"
为我关闭了灰色的 LastPass [ ... ]框。
来源于 LastPass.com
遗憾的是,这里的所有选项(autocomplete、 data-lpignore 等)都不能阻止 LastPass 自动填写我的表单字段。我对这个问题采取了更为严厉的方法,而是通过 JavaScript 异步设置输入 name属性。下面这个与 jQuery 相关的函数(从表单的 oncommit 事件处理程序调用)完成了这个任务:
name
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属性:
tmp-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]
因为我需要能够正常地提交表单,所以我仍然使用我原来的解决方案来“及时”更新字段名称。为了避免使用密码输入字段,我发现 这个解决方案工作得非常好。
这个 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"); }
对于2019年10月最新的 Lastpass 错误版本,这个简单的修复似乎是最好的。
加
type="search"
你的输入。
Lastpass 例程检查 type属性以确定如何处理其自动填充,而对“ search”的 html5 type则不执行任何操作这个修复有点粗糙,但它只是一行修改,当他们修复他们的错误脚本时,可以很容易地删除它。
type
注意: 这样做之后,如果某些浏览器选择了 type属性,那么您的输入可能会显示出不同的样式。如果您观察到这一点,您可以通过在您的输入上将特定于浏览器的 CSS 属性 -webkit-appearance和 -moz-appearance设置为 'none'来防止这种情况发生。
-webkit-appearance
-moz-appearance
'none'
以下是我用来防止 lastpass 塞满剃须刀的方法:
单击工具栏中的活动 LastPass 图标,然后转到 Account Options > Extension Preferences。
在这个屏幕上检查“不要覆盖已经填充的字段”(在底部)
接下来,单击左侧的“高级”。
在这个屏幕上勾选“尊重自动填充 = 关闭: 允许网站禁用自动填充”。
我不需要在 ASP cshtml 表单中执行任何特殊操作,但是在@Html 表单中有一个默认值。编辑盒子。
我希望这对某人有用。我在网上找不到任何关于这个问题的 Razor 特定帮助,所以我想我应该加上这个,因为我通过上面的链接和贡献找到了这个问题的帮助。
对于偶然发现这个问题的人来说——密码字段 autocomplete="new-password"阻止 LastPass 填写密码,而密码与 data-lpignore="true"结合起来就完全禁用了密码
autocomplete="new-password"
type="hidden" autocomplete="off"
把这个添加到我的输入对我来说很有用。(输入也有 visibility: hidden css)。
visibility: hidden
2021年11月更新
我注意到所有 LastPass 小部件都包装在 css-1obar3y 类的 div 中。
div.css-1obar3y { display: none!important; }
对我来说再合适不过了
截至2022年10月11日,这些都不管用。
我所做的是将以下内容添加到一个假密码字段中
<input id="disable_autofill1" name="disable_autofill1" style="height:0; width:0; background:transparent; border:none;padding:0.3px;margin:0;display:block;" type="password">
这似乎足以最小化该元素在屏幕上的大小(对我来说几乎为0) ,同时仍然不会触发上一次的恶性算法。把它放在真正的密码字段之前。
我相信这个变体可以用来欺骗其他领域,我们不需要自动填充或建议一个新的密码最后通行证。
试试这个:
[data-lastpass-icon-root], [data-lastpass-root] { display: none !important; }