私はちょうどあなたがサイトに覚えのユーザ名とパスワードを持っている場合は、クロームの現在のバージョンはにあなたのユーザー名/メールアドレスを自動入力することを発見した前フィールドの任意type=password
のフィールド。フィールドが何と呼ばれるかは関係ありません-パスワードがユーザー名になる前のフィールドを想定しているだけです。
古いソリューション
使用するだけで<form autocomplete="off">
、パスワードの事前入力や、ブラウザーが行う可能性のある仮定(多くの場合、間違っている)に基づくフィールドのヒューリスティックな入力が防止されます。<input autocomplete="off">
パスワードの自動入力ではほとんど無視されているように見えるとは対照的に(Chromeでは、Firefoxはそれに従います)。
更新されたソリューション
Chromeはを無視するようになりました<form autocomplete="off">
。したがって、(私が削除していた)私の最初の回避策は今や大流行しています。
いくつかのフィールドを作成し、「display:none」で非表示にするだけです。例:
<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
次に、実際のフィールドを下に置きます。
コメントを追加することを忘れないでください。そうしないと、チームの他の人があなたが何をしているのか不思議に思うでしょう。
2016年3月の更新
最新のChromeでテストしたところ、すべて良好です。これはかなり古い回答ですが、私たちのチームがこれまで何十ものプロジェクトで何年も使ってきたことを述べておきたいと思います。以下のいくつかのコメントにもかかわらず、それはまだうまくいきます。フィールドはdisplay:none
フォーカスされないことを意味しているため、アクセシビリティに問題はありません。私が述べたように、あなたはあなたの本当のフィールドの前にそれらを置く必要があります。
JavaScriptを使用してフォームを変更している場合は、追加のトリックが必要になります。フォームの操作中に偽のフィールドを表示し、ミリ秒後に再び非表示にします。
jQueryを使用したコードの例(偽のフィールドにクラスを指定した場合):
$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
},1);
2018年7月の更新
Chromeの使いやすさの専門家が一生懸命働いているため、私のソリューションはうまく機能しなくなりました。しかし、彼らは私たちに骨を投げました:
<input type="password" name="whatever" autocomplete="new-password" />
これは機能し、主に問題を解決します。
ただし、パスワードフィールドがなく、電子メールアドレスしかない場合は機能しません。また、黄色になり、プレフィルするのをやめるのが難しい場合もあります。偽のフィールドソリューションを使用してこれを修正できます。
実際、2つのたくさんの偽のフィールドに立ち寄って、別の場所で試す必要がある場合があります。たとえば、フォームの最初にすでに偽のフィールドがありましたが、Chromeは最近「電子メール」フィールドに再度事前入力を開始しました。そのため、ダブルダウンして、「電子メール」フィールドの直前に偽のフィールドを追加し、それを修正しました。フィールドの最初または2番目のロットを削除すると、誤った熱狂的な自動入力に戻ります。
2020年3月の更新
このソリューションがまだ機能するかどうか、いつ機能するかは明らかではありません。それは時々まだ機能するように見えますが、常にではありません。
以下のコメントにいくつかのヒントがあります。@anilyeniによって追加されたものは、さらに調査する価値があります。
気づいたように、にautocomplete="off"
含まれる要素が3つ未満の場合、Chrome 80 で動作し<form>
ます。ロジックとは何か、それに関する関連ドキュメントはどこにあるのかわかりません。
また、私はテストしていませんが、@ dubroxからのこれは関連があるかもしれません:
トリックに感謝しますが、display:none;
もううまくいかないので答えを更新してくださいposition: fixed;top:-100px;left:-100px; width:5px;
:)
2020年4月の更新
この属性のクロムの特別な値は仕事をしています:(入力でテストされました-私ではありません)
autocomplete="chrome-off"