Html 停止填写表格
有没有办法防止LastPass浏览器扩展使用名为“username”的输入字段填写基于HTML的表单 这是一个隐藏字段,因此我不希望任何软件出于其目的使用此字段:Html 停止填写表格,html,forms,lastpass,Html,Forms,Lastpass,有没有办法防止LastPass浏览器扩展使用名为“username”的输入字段填写基于HTML的表单 这是一个隐藏字段,因此我不希望任何软件出于其目的使用此字段: <input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none"> 解决方案不应该像“重命名输入字段”。我认为lastpass尊重输入的auto
<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">
解决方案不应该像“重命名输入字段”。我认为lastpass尊重输入的autocomplete=“off”
属性,但我不是100%确定
编辑
正如其他人指出的那样。这仅在用户配置了最后一次通过以执行此操作时有效。必须满足两个条件:
autocomplete=“off”
属性设置>高级>允许页面禁用自动填充
所以这取决于用户和开发人员。我知道我来晚了,但我在试图阻止lastpass破坏我的表单时发现了这一点@takeshin是正确的,因为自动完成是不够的。我最后做了下面的黑客只是为了隐藏这个符号。不漂亮,但我去掉了图标 如果有任何lastpass开发人员正在阅读本文,请给我们一个属性来使用,这样我们就不必求助于这样的东西
form[autocomplete="off"] input[type="text"] {
background-position: 150% 50% !important;
}
对我来说,有效的方法是在表单的id中使用“-search-”这个词,类似于
”,而lastpass不会将其元素添加到表单输入中。它可以使用一些更简单的工具,如
,但不能使用
将“搜索”添加到输入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>
setTimeout(函数(){document.getElementById('lp').style.display='none'},75);
它会导致令人讨厌的闪烁,但确实删除了自动填充的废话——尽管它仍然显示“生成密码”小部件。LastPass等待domready,然后检查是否有任何可见的密码字段,因此无法隐藏或缩小上面的模拟字段。对我来说,要么是
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))
还有那些他们似乎忽略的角色
-关键词:
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行代码:)尝试了-search重命名,但由于某些原因没有成功。对我起作用的是:
data-lpignore="true"
对于输入字段,我禁用了灰色的LastPass[…]框
源于这里的任何选项(自动完成、数据忽略等)都没有阻止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在我的密码更改表上填写密码字段的唯一解决方案是:
input[type=password]
,以及因为我需要能够在我的情况下正常提交表单,所以我仍然使用我的原始解决方案“及时”更新字段名。为了避免使用密码输入字段,我发现它工作得非常好。这个ES6样式的代码对我很有帮助,因为它为我的所有输入控件添加了数据:
const elements = document.getElementsByTagName("INPUT");
for (let element of elements) {
element.setAttribute("data-lpignore", "true");
}
要访问特定的输入控件,可以编写如下内容:
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
属性以确定如何处理其自动填充,它对html5type
的“搜索”不做任何操作。此修复程序有点粗糙,但这是一个单行更改,当他们修复错误脚本时可以轻松删除
注意:执行此操作后,如果某些浏览器选择
type
属性,则输入的样式可能会有所不同。如果您注意到这一点,您可以通过在您的输入中将特定于浏览器的CSS属性-webkit-appearance
和-moz-appearance
设置为'none'
。以下是我防止lastpass在Chrome中填充razor@Html.EditorFor框的有效方法:
单击工具栏中活动的LastPass图标,然后转到帐户选项>扩展首选项
在此屏幕上选中“不要覆盖已填充的字段”(底部)
其次,,