web-dev-qa-db-ja.com

LastPassによるフォームへの入力を停止する

LastPassブラウザ拡張機能がHTMLベースのフォームに「username」という名前の入力フィールドを入力しないようにする方法はありますか?

これは隠しフィールドなので、ソフトウェアがこのフィールドを目的に使用しないようにします。

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

解決策は、「入力フィールドの名前を変更する」ようなものであってはなりません。

102
Marco

追加中

data-lpignore="true"

入力フィールドにグレーのLastPass [...]ボックスを無効にしました。

LastPass.com から供給

112

次の2つの条件を満たす必要があります。

  1. form(要素ではない)にはautocomplete="off"属性が必要です
  2. Lastpassユーザーは、このオプションを有効にする必要があります:Settings > Advanced > Allow pages to disable autofill

したがって、これはユーザーと開発者の両方に依存します。

39
takeshin

私のために働いたのは、<form id="affiliate-search-form">のようなフォームのIDにWord "-search-"を含めることであり、lastpassはその要素をフォーム入力に追加しません。 <form id="search">のような単純なもので動作しますが、<form id="se1rch">では動作しません

36

私はここでパーティーに遅れていることは知っていますが、フォームを台無しにすることからラストパスを止めようとしたときにこれを見つけました。 @takeshinは、オートコンプリートでは十分ではないという点で正しいです。シンボルを隠すためだけに、以下のハックをしました。きれいではありませんが、アイコンを取り除きました。

ラストパス開発者がこれを読んでいる場合は、使用する属性を教えてください。このようなものに頼る必要はありません。

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

Ithinklastpassはautocomplete="off"入力の属性ですが、100%確信はありません。

[〜#〜] edit [〜#〜]他の人が指摘したように。これは、ユーザーがこれを受け入れるように構成された最後のパスを持っている場合にのみ機能します。

15
mituw16

私にとっては、textに等しいtype=searchか、role=noteを使用していました。

LastPass-JavaScriptを確認することはできますが、それは巨大です。いくつかの回避策を見つけることができるかもしれません。4つの入力タイプのみを確認したので、input type=searchが1つの回避策になります。

!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行のコードを準備します:)

12
MushyPeas

入力IDに「検索」を追加

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

パーティーに少し遅れましたが、フォームを次のように変更してこれを達成しました:

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

それは厄介なちらつきを引き起こしますが、自動入力ナンセンスを削除します-それでも「パスワードを生成」ウィジェットを表示します。 LastPassは、domreadyになるまで待機してから、表示されるパスワードフィールドがあるかどうかを確認するため、上のモックフィールドを非表示または縮小することはできません。

5
PeteAUK

この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");
}
2
ccalvert

-search renameを試しましたが、何らかの理由で機能しませんでした。私のために働いたのは次のとおりです:

  1. フォームをオートコンプリートする-autocomplete = "off"
  2. フォームフィールドの入力タイプをテキストに変更します
  3. cssに新しいクラスを追加して入力をマスクし、パスワードフィールドをシミュレートします
  4. cssビット:input.masker {-webkit-text-security:disc; }

FFおよびChromeの最新バージョンで試用およびテストしました。

0
Louis Ferreira

ここのオプション(オートコンプリート、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);

フォームでは、同等のname属性の代わりにtmp-name属性を使用しました。例:

<form id="myForm" method="post" action="/someUrl">
    <input name="username" type="text">
    <input tmp-name="password" type="password">
</form>

更新2019-03-20

NgMessagesがフィールド検証エラーメッセージを正しく表示するために、name属性を持つフォームフィールドに依存するAngularJSのために上記の問題にまだ遭遇しました。

最終的に、LastPassがパスワード変更フォームのパスワードフィールドに入力しないようにする唯一の解決策は、次のとおりです。

  1. input[type=password]の使用を完全に避け、かつ
  2. フィールド名に「パスワード」が含まれないようにする

私の場合、通常フォームを送信できる必要があるため、元のソリューションを使用してフィールド名を「ジャストインタイム」に更新しました。パスワード入力フィールドの使用を避けるため、 このソリューション は非常にうまく機能していることがわかりました。

0
John Rix