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

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

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

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

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

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

编辑
正如其他人指出的那样。这仅在用户配置了最后一次通过以执行此操作时有效。

必须满足两个条件:

  • 表单(不是元素)需要有
    autocomplete=“off”
    属性
  • Lastpass用户需要启用此选项:
    设置>高级>允许页面禁用自动填充

  • 所以这取决于用户和开发人员。

    我知道我来晚了,但我在试图阻止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重命名,但由于某些原因没有成功。对我起作用的是:

  • 将表单标记为自动完成-autocomplete=“关闭”
  • 将表单字段输入类型更改为文本
  • 向css添加一个新类以屏蔽输入,模拟密码字段
  • css位:input.masker{ -webkit文本安全:光盘; }
  • 在FF和Chrome的最新版本中试用并测试。

    添加

    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
    属性以确定如何处理其自动填充,它对html5
    type
    的“搜索”不做任何操作。此修复程序有点粗糙,但这是一个单行更改,当他们修复错误脚本时可以轻松删除


    注意:执行此操作后,如果某些浏览器选择
    type
    属性,则输入的样式可能会有所不同。如果您注意到这一点,您可以通过在您的输入中将特定于浏览器的CSS属性
    -webkit-appearance
    -moz-appearance
    设置为
    'none'

    以下是我防止lastpass在Chrome中填充razor@Html.EditorFor框的有效方法:

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

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

    其次,,