Chromeの自動入力を無効にする


620

いくつかのフォームでChromeの自動入力動作に関する問題が発生しています。

フォームのすべてのフィールドには、「メール」、「名前」、「パスワード」などの非常に一般的で正確な名前があり、それらもautocomplete="off"設定されています。

オートコンプリートフラグにより​​、オートコンプリートの動作が正常に無効になりました。入力を開始すると値のドロップダウンが表示されますが、Chromeがフィールドに自動入力する値は変更されていません。

この動作は問題ありませんが、Chromeが入力を誤って入力している場合を除きます。たとえば、電話の入力に電子メールアドレスを入力します。顧客はこれについて不満を言っているので、それが複数のケースで発生していることが確認されており、自分のマシンでローカルに実行した何かに対する何らかの結果ではありません。

私が考えることができる現在の唯一の解決策は、カスタム入力名を動的に生成してからバックエンドで値を抽出することですが、これはこの問題を回避するかなりハックな方法のようです。これを修正するために使用できる自動入力の動作を変更するタグや癖がありますか?


6
重複ではありません。これはオートフィルの無効化を処理し、オートフィルの色のスタイリングを処理します...
Nicu Surdu 2013年

17
Kaszoni Ferenczの回答に従って、autocomplete = "off"の代わりにautocomplete = "false"を使用して、投票してください。
ラフコーダー、2015

7
この質問に対する答えの数を見てください。何かを教えてくれるはずです。負けた戦いを戦っています。これはもはやChromeの問題ではなく、Firefoxや他の人たちも同様です。好むと好まざるとにかかわらず、ブラウザー業界の決定を受け入れる必要があります。そのフォームのオートコンプリートはユーザーの選択です-それらと戦うことはできますが、失うことになります。結局のところ、質問する必要があるのは、オートコンプリートを破壊する方法ではなく、オートコンプリートで適切に機能するフォームを作成する方法です。セキュリティについてのあなたの懸念はあなたが心配するのではなく、ユーザーです。
mindplay.dk

21
申し訳ありませんが、@ mindplay.dkの応答は逆効果です。私の状況は、自分のサイトにログインしているユーザーがいて、サイトのページで他のシステムのアカウント/パスワード情報を入力することです。ユーザーが新しい情報を入力するためのダイアログを表示すると、私のサイトのログオン情報が入力されますが、これは完全に間違っており、ユーザーが不注意でその情報を入力すると問題が発生します。この2つには何の関係もありません。お互い。この場合、ブラウザはユーザーの希望に反することをしています。
Mike K

8
@ mindplay.dk-私のWebアプリケーションは、職場向けのワークフロー管理アプリケーションです。そのため、いいえ、セキュリティに関する懸念は心配する必要があります。トップマネジメントによって義務付けられており、すべての従業員、つまり「ユーザー」が遵守する必要があります。 」ただし、Chrome、IE、またはその他のブラウザー自体を設定するように依頼すると、意図的に、または意図せずに、自動入力を使用して終了できるため、認証プロセスにギャップが生じます。AすべてのWebアプリケーションが同じタイプであるわけではなく、同じ種類のユーザーまたは懸念事項があります。
PoloHoleSet 2016

回答:


906

新しいChromeバージョンの場合はautocomplete="new-password"、パスワードフィールドに入力するだけで済みます。私はそれをチェックしました、うまく働きます。

このディスカッションでChrome開発者からヒントを得ました:https : //bugs.chromium.org/p/chromium/issues/detail?id=370363#c7

PS Chromeは、ラベルや任意のテキストノードなど、フィールドを囲むことができる名前、ID、およびテキストコンテンツから自動入力動作を推測しようとすることに注意してください。street-addressコンテキスト内のようなオートコンプリートトークンがある場合、Chromeはそのように自動入力します。ヒューリスティックは、フォームに追加のフィールドがある場合にのみトリガーされる場合や、フォームにフィールドが少なすぎる場合にトリガーされない場合があるため、非常に混乱する可能性があります。また、これautocomplete="no"は機能するように見えますがautocomplete="off"、歴史的な理由で機能しないことに注意してください。autocomplete="no"このフィールドはと呼ばれるフィールドとして自動入力する必要があることをブラウザに伝えています"no"。一意のランダムなautocomplete名前を生成する場合は、オートコンプリートを無効にします。

ユーザーが不正なフォームにアクセスした場合、自動入力情報が破損している可能性があります。手動で行ってChromeでオートフィル情報を修正するように依頼することは、彼らからの必要なアクションとなる場合があります。


115
'new-password'は 'off'と 'false'を試した後私のために働きました
Kevin

26
これが唯一の有効な修正です。Falseでオフの場合、機能しなくなります。正解になるはずです。
デビッド

5
これが機能する理由は、Chromeチームが@ developers.google.com /web/fundamentals/design -and- ui/input/…に示されているように、推奨されるオートコンプリート値を作成しようとしているためです。周囲に追加のロジックがあるもの、この場合は、オートフィルを一時停止するがオートコンプリートの提案を許可するもの
Deminetix

30
1.13.2018バージョン63.0.3239.132(公式ビルド)(64ビット)の時点では機能していません
PellucidWombat

37
私は言いたかっただけです。この問題に出くわした後、Chromeは本当の仕事です。したがって、今はオプションのままであるはずの機能を無効にするために、フープをジャンプする必要があります。住所が新しい/毎回異なるビジネスアプリケーションでは、オートフィルに対応する世界が必要です。グーグルはマイクロソフトと同じくらい悪くなってきている。
Eddy Howard

700

私はちょうどあなたがサイトに覚えのユーザ名とパスワードを持っている場合は、クロームの現在のバージョンはにあなたのユーザー名/メールアドレスを自動入力することを発見した前フィールドの任意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"


7
パスワードフィールドの前の入力で発生しているヒューリスティックな自動入力を完全に説明したとおり、これはうまくいくと確信していました。残念ながら、それは私にとってはうまくいきませんでした。フォームとすべての入力の両方にautocomplete = "off"を入れても、まだ入力されています。私のために働いた唯一の解決策は、上記のgoodeyeのリンクにあります。(パスワードがChromeのヒューリスティックチェックをスローする前に、2番目の非表示のtype = "password"入力を配置します)
国会

19
これは以前は正常に機能していましたが、私もそれを使用しましたが、Chromeのアップグレード(しばらくしてから5月5日の間)以来、Chromeはフォームプロパティを無視します:(
Tominator

13
Googleは(Chrome v34だと思います)でポリシーを作成することを決定しました。これにより、フォームレベルのディレクティブを含むautocomplete = "off"を常に無視するようになりました。
ジャマー2014年

10
autocomplete = "off"ではなく、autocomplete = "false"を試してください
ラフコーダー、2015

243
この属性も必要です:autocomplete="I told you I wanted this off, Google. But you would not listen."
rybo111

265

何カ月も何カ月も苦労した結果、このソリューションは想像以上に簡単であることがわかりました。

代わりのautocomplete="off"使用autocomplete="false";)

とてもシンプルで、Google Chromeでも同様に機能します。


2019年8月の更新(コメントで@JonEdigerへのクレジット)

注:オンラインの多くの情報によると、ブラウザーはautocomplete = 'false'をautocomplete = 'off'と同じものとして扱うようになりました。少なくとも現時点では、これらの3つのブラウザのオートコンプリートを妨げています。

フォームレベルで設定し、必要な入力に対して、 'none'などの無効な値に設定します。

<form autocomplete="off"> 
  <input type="text" id="lastName" autocomplete="none"/> 
  <input type="text" id="firstName" autocomplete="none"/>
</form>

8
私のために働いた!ただし、重要な注意点が1つあります。Webページには、名前、住所、郵便番号、電話番号、電子メールの5つのフィールドがあります。フォームと[名前]フィールドにautocomplete = 'false'を含めた場合でも、機能します。ただし、アドレスフィールドにもautocomplete = 'false'を含めると、最終的に自動入力が停止しました。したがって、オートコンプリートプロパティをログインフィールドや名前フィールドではなく、次のフィールドにも配置する必要があります。(2015年
DVDフランコ

45
これでうまくいかない場合:Chromeがユーザーを「助ける」方法は2つあることに注意してください。AUTOCOMPLETEは、提出された同じフォームでの以前の送信に基づいてプロンプトを表示し、フォームを複数回使用している人々に影響を与えます。オートコンプリートは、autocomplete = "off"で無効になります。オートフィルは、他のページで以前に入力された同様のフォームのアドレス帳に基づいてプロンプトを表示します。また、変更するフィールドを強調表示します。autofillは、autocomplete = "false"で無効にできます。
genkilabs 2015年

4
これは機能しません(バージョン43.0.2357.124 m)。これはおそらくGoogleによる見落としでしたが、現在は解決されています。彼らはすべてを自動入力したいという点で「ユーザーは常に正しい」と考えているようです。問題は、私の登録フォームがちょうどログインフォームのようなユーザーデータを保存し、最も確かである、いないユーザーが何を望んで...
rybo111は

3
YEPそれはChrome 43.0.2357で動作します!! Chromeでのこの動作は非常に煩わしいものであり、この回避策を理解するには少し時間がかかりました。ご回答有難うございます。
Adriano Rosa

3
Chrome 44.0.2403.157では動作しません。この機能はどのように機能し、異なるバージョンでは機能しないのですか。ばかげている
Mattijs

120

時々さえ autocomplete=offは、資格情報を間違ったフィールドに入力する妨げられません。

回避策は、読み取り専用モードを使用してブラウザーの自動入力を無効にし、フォーカスに書き込み可能を設定することです。

 <input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

focusイベントは、マウスのクリックで発生し、フィールドをタブ移動します。

更新:

Mobile Safariはフィールドにカーソルを設定しますが、仮想キーボードを表示しません。この新しい回避策は以前と同じように機能しますが、仮想キーボードを処理します。

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

ライブデモ https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

説明:ブラウザーが資格情報を誤ったテキストフィールドに自動入力しますか?

入力を誤って入力する。たとえば、電話入力に電子メールアドレスを入力する

同じフォームにパスワードフィールドがある場合、ChromeとSafariでこの奇妙な動作が発生することがありますたぶん、ブラウザは保存された認証情報を挿入するためのパスワードフィールドを探します。そして、それが自動入力ユーザー名を前にパスワードフィールドを表示さ最寄りtextlike、入力フィールドの中に(ちょうど観測による推測)DOMに。ブラウザは最後のインスタンスであり、制御できないため、

上記のこの読み取り専用の修正は私にとってはうまくいきました。


12
どのような素晴らしい修正:) jqueryをこれで置き換える必要があります:this.removeAttribute( "class")
Roey

これを使用して、ドロップウォンリストが自動入力されないようにしました。しかし、readonlyのスタイルも変更したため、見た目はわかりませんでした。クールなアイデア!
ComfortablyNumb

1
@Clint:上記のコードスニペットは、ユーザーがフィールドに入ると(マウスクリックまたはタブキーごとに)、readonly属性を削除します。おそらく、自動入力保護されているが、ユーザーが触れていないフィールドを参照していると思います。このフィールドの目的は何ですか?本当に保護する必要がありますか?シナリオによっては、送信時にすべての読み取り専用属性を削除することもできます。問題についてより具体的なコメントを追加できますか?多分私はあなたを助けることができます :)
dsuess

1
JavaScriptを使用している場合。値をに設定してからdummy、もう一度値を削除しないのはなぜですか?読み取り専用の追加と削除は危険な動きのように聞こえます-ブラウザがそれに焦点を合わせたくない場合はどうなりますか?
rybo111

1
どうやらグーグルはここで私たち全員のための決定をしようとしているようです、彼らはautocomplete = "off"に関するチケットを閉じました:bugs.chromium.org/p/chromium/issues/detail?id = 468153。ただし、オートフィルを無効にするための有効なユーザーケースを収集するために開かれた別のチケットがあります。このチケットに返信して、この問題の認知度を高めてください:bugs.chromium.org/p/chromium/issues/detail?id
Norman Xu

80

検索ボックス機能を実装している場合は、type属性をsearch、次のように。

<input type="search" autocomplete="off" />

これは私にとってChrome v48で動作し、正当なマークアップのようです:

https://www.w3.org/wiki/HTML/Elements/input/search


はい!:) ありがとうございました!これはChrome 67.0.3396.99で機能します。(あなたのリンクはw3.org/wiki/HTML/Elements/input/searchである必要があります2018年9月現在)。
アンディキング

4
最終的に!まだ動作しますバージョン69.0.3497.100(公式ビルド)(64ビット)これは本当の答えになるはずです!
Venson、2018年

1
誰もが正しいと間違っていると同時に、入力ではなくタグ<form autocomplete = "off">内にautocomplete = "off"を記述する必要があります。これにより、オートフィルの動作が停止します
demopix

2
フォームにautocomplete = "off"を設定し(そのデフォルトのフォーム全体を変更するため)、<input>にtype = "search"を設定するだけでも機能します
John

9
Chromeバージョン72.XX以降、この修正は機能しません。最新の修正をここで見つけてくださいstackoverflow.com/a/55045439/1161998
Adheep Mohamed Abdul Kader

65

これを試して。質問が少し古いことは知っていますが、これは問題に対する別のアプローチです。

また、問題がpasswordフィールドのすぐ上にあることに気づきました。

私は両方の方法を試しました

<form autocomplete="off">そして<input autocomplete="off">、どれも私のために働いていませんでした。

そこで、以下のスニペットを使用して修正しましたdisplay:none。パスワードタイプフィールドのすぐ上に別のテキストフィールドを追加して作成しました。

このようなもの:

<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />

それが誰かを助けることを願っています。


1
これは私のために働いた(今のところ)。私は時間の経過とともに約6種類のハッキングを使用していることがわかりました。しばらくすると、Chromeはそのハックを無効にしたいと判断しました。したがって、このような新しいものが必要です。私のアプリケーションでは、ユーザーが変更を加えない限り空白のままにしておく電子メールとパスワードのフィールドを含むプロファイル更新フォームがあります。ただし、Chromeが自動入力すると、ユーザーIDが[メールの確認]フィールドに入力されるため、ユーザーは正しいことをしようと悩んでいるため、さまざまなエラー状態が発生し、さらにエラー状態が発生します。
ジェフリーサイモン

2
このハックが機能する理由についての簡単な説明(今のところ):Chromeは最初のtype = password入力を確認して自動入力し、これの直前のフィールドはuserhameフィールドである必要があると想定し、そのフィールドにユーザー名を自動入力します。@JeffreySimonこれは、電子メール確認フィールドのユーザーIDの現象を説明するはずです(フォームにも同じものが表示されていました)。
MrBoJangles 2014年

1
@kentcdodds-機能しなくなったという意味がわかりません。jsbinにはパスワードフィールドがないため、状況が異なります。私はこのソリューションを何年も使用してきましたが、最近では、このソリューションが必要であることに気付き、先週(2015年3月)機能しました。
マイクネルソン、2015年

1
やったー!うまくいくように見える解決策!Googleがを調べているように見えるので、フィールドに名前を付け、正当なフィールドpasswordactual_password使用することをお勧めしますname。ただし、これはChromeがパスワードを保存しないことを意味します。これは実際に必要な機能です。AAAAARRRRGHH!
rybo111

2
更新:これは、最後に実装してから1年間機能し続けます。ここで確かな勝者がいるかもしれません。
MrBoJangles 2015

48

理由はわかりませんが、これが役立ちました。

<input type="password" name="pwd" autocomplete="new-password">

理由はわかりませんが、autocompelete = "new-password"は自動入力を無効にします。最新の49.0.2623.112 Chromeバージョンで動作しました。


Chromeを更新しましたが、それでも機能します。50.0.2661.87(64ビット)
Tauras

残念ながら、フォームを送信するとき(または入力フィールドが非表示/削除されているとき)、Chromeは変更されたログインの保存を要求します。
sibbl 2016年

バージョン51.0.2704.79 mで動作
Geoffrey Hale

ホーリーf ***なぜこれが機能するのですか?それはバグですか?ここでテストして1つの入力にのみ配置し、入力ログインとパスワードの両方で機能したため、パスワードのみに配置しました
Leandro RR

何も思いつきません。それは開発者が作ったクロームの「もの」だと思います。多分私は間違っています。
Tauras

46

私にとっては、単純な

<form autocomplete="off" role="presentation">

それをやった。

複数のバージョンでテストされ、最後の試行は56.0.2924.87でした


@ArnoldRoaバージョンが追加されました。これは、私が投稿した日からずっとサイトにあり、正常に機能するバージョンはほとんどありませんでした。どのバージョンを使用していますか?PC / Mac?
KUF

57.0.2987.110では機能しません。Chromeは黄色で強調表示し、保存したパスワードをフィールドに事前入力します。ただし、このページはユーザー管理ページであり、ログインページではありません。

1
@ダミー私は今クロム最新(57)でそれをテストし、それはまだ私のために働いています。入力フィールドで何か特別なことをしましたか?どこにコードを置いて、再現できるか?
Kuf

3
バージョン64.0.3282.186(公式ビルド)(64ビット)Windows。2018-03-01自動入力を無効にするために機能しません。
ビリージーンズ、

2
かなり確信してこれは、支援技術のからのフォーム入力/削除w3c.github.io/using-aria/#ariapresentationを
OLEXポノマレンコ

25

この属性を追加する必要があります:

autocomplete="new-password"

ソースリンク:記事全文


これを理解するための情報源はありますか?
AlexioVay

機能しますが、ユーザー名やその他のフィールドで使用できるため、セマンティックではありません。
ロビンアンドリュース

1
ドキュメントのページ:developer.mozilla.org/en-US/docs/Web/Security/...
Justinas

19

それはとてもシンプルでトリッキーです:)

クロムは基本的に検索googleのすべての最初に表示されるパスワード要素の内側<form><body>そして<iframe>あなたは、次のようにダミーのパスワード要素を追加する必要があり、これを無効にするので、彼らのために自動補充を可能にするタグ:

    • <form>タグ内のパスワード要素の場合、ダミータグをフォームの最初の要素として、<form>開いているタグの直後に配置する必要があります。

    • <form>タグ要素内にないパスワード要素の場合、ダミー要素を、<body>タグを開く直後のHTMLページの最初の要素として配置します。

  1. cssを使用せずにダミー要素を非表示にする必要があるため、display:none基本的には以下をダミーのパスワード要素として使用します。

    <input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/>

1
よくできました。Chromeのアルゴリズムをどのようにして見つけましたか?ページがsetTimeoutタイマーでロードされた後、JSを使用して値を変更する古いメソッドが機能しなくなることがわかりました。しかし、これは完璧に機能します!

残念ながら、通常のTextBox入力では機能しません。
eYe 2016年

1
実際には、nameプロパティを設定するだけで機能します;)
Fareed Alnamrouti

Chrome 58では、これは機能しません。width:1pxを使用します。パスワードフィールドが完全に非表示の場合、Chromeは通常どおり自動入力します。また、z-index:-999も役立つため、コンテンツと重複しません。
cristiancastrodc 2017年

1
角度のあるhtmlコンポーネントでChrome 67.0で動作します<form *ngIf="!loggedIn()" #loginForm="ngForm" class="navbar-form navbar-right" (ngSubmit)="login()"><input type="password" style="width: 0;height: 0; visibility: hidden;position:absolute;left:0;top:0;"/><input type="text" #username="ngModel" placeholder="Username" class="form-control" required autocomplete="off" name="username" [(ngModel)]="model.username"><input type="password" #password="ngModel" placeholder="Password" class="form-control" required autocomplete="off" name="password" [(ngModel)]="model.password">...
ジュニアメイヘ2018

19

Googleは人々が行うと思われるすべての回避策をオーバーライドすることを主張しているので、ここに私の提案するソリューションがあります。

オプション1-クリックですべてのテキストを選択する

入力の値をユーザーの例(例:)your@email.comまたはフィールドのラベル(例Email:)に設定し、呼び出さfocus-selectれたクラスを入力に追加します。

<input type="text" name="email" class="focus-select" value="your@email.com">
<input type="password" name="password" class="focus-select" value="password">

そして、jQueryは次のとおりです。

$(document).on('click', '.focus-select', function(){
  $(this).select();
});

Chromeが値をいじるのを見ることは本当にできません。それはクレイジーになるでしょう。うまくいけば、これは安全な解決策です。

オプション2-メールの値をスペースに設定してから削除する

電子メールとパスワードなどの2つの入力があると仮定して、電子メールフィールドの値を" "(スペース)に設定し、属性/値を追加して、autocomplete="off"JavaScriptでこれをクリアします。パスワード値は空のままにできます。

ユーザーがなんらかの理由でJavaScriptを使用していない場合は、ユーザーがスペースを削除しない場合に備えて、サーバー側の入力をトリミングしてください(とにかくそうする必要があります)。

jQueryは次のとおりです。

$(document).ready(function() {
  setTimeout(function(){
    $('[autocomplete=off]').val('');
  }, 15);
});

私のテストではたまに機能するように見えた15ので、タイムアウトをに設定しました5

初期値をスペースに設定しないと、Chromeは入力を自動入力したかのように黄色のままにします。

オプション3-非表示の入力

これをフォームの最初に置きます:

<!-- Avoid Chrome autofill -->
<input name="email" class="hide">

CSS:

.hide{ display:none; }

他の開発者が削除しないように、HTMLノートを保管してください。また、非表示の入力の名前が適切であることを確認してください。


@ヴァイア-別のページに移動してから、戻るボタンを押してみましたか?結果がまちまちです。調整が必要な場合があります。
rybo111 2015年

もしそうなら、私はオプション1を試していません。また、[戻る]ボタンでは呼び出されないajaxが読み込まれたモーダルで自動入力を無効にする必要もありました。しかし、他の結果がある場合は、お知らせします。@ rybo111
AlexioVay

@ヴァイア私はオプション2を意味しました-問題が発生した場合はここに返信してください。ありがとう。
rybo111 2015年

15

css text-securityを使用type = passwordを使用しないディスク

html

<input type='text' name='user' autocomplete='off' />
<input type='text' name='pass' autocomplete='off' class='secure' />

or

<form autocomplete='off'>
    <input type='text' name='user' />
    <input type='text' name='pass' class='secure' />
</form>

CSS

input.secure {
    text-security: disc;
    -webkit-text-security: disc;
}

これまでに見つけた最善のアプローチ!
ええと

私の目的にはこれは完璧です、ありがとう!Chromeは自動入力やオートコンプリートを行わず、保存することもできません。また、表示から見えなくなるだけでなく、クリップボードからも見えなくなります。入力したものをコピーしてメモ帳に貼り付け、「•••• •••••••• "。鮮やかさ!
Doug McLean

15

場合によっては、autocomplete属性がオフに設定されていても、ブラウザーはオートコンプリート値を提案し続けることがあります。この予期しない動作は、開発者にとって非常に不可解です。オートコンプリートを強制的に実行するコツは、属性にランダムな文字列を割り当てることです。次に例を示します。

autocomplete="nope"

RE:「予期しない動作」この動作は、すべてのページがどのように機能するかを開発者よりもよく知っていると信じているGoogleによって推進されています。時々、私はそのままのパスワード入力、ゼロのフリルが欲しいだけです。
定例Joe

3
この組み合わせは最終的に私のために働きました:role = "presentation" autocomplete = "nope"はChromeバージョン64.0.3282.186(公式ビルド)(64ビット)でテストされました。なんて悪夢なんだ!
ビリージーンズ、

2
ランダム文字列はChromeでは機能しますが、Firefoxでは機能しません。完全を期すために、「autocomplete = 'off-no-complete'」を使用し、onfocus = "this.readOnly = false"でreadonly属性を設定しています。私のアプリは、ユーザーが何千ものアドレスを入力するために使用するエンタープライズアプリケーションです。したがって、これを制御するためのユースケースは現実的です。Javascriptの使用も保証できるので、少なくとも私はそれを実現しています
ChronoFish

13

これをフォームに追加すると、Chromeで自動入力を使用できなくなることがわかりました。

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>

ここで見つかりました。https://code.google.com/p/chromium/issues/detail?id=468153#hc41

Chromeがオートコンプリートのタイミングについてデベロッパーよりもよく知っていると判断したことに本当にがっかりしました。それに本物のマイクロソフトの感触がある。


PreventChromeAutocompleteと言っても、実際にはそうではありません。autocomplete = "off"とname = "somename"と言って、オートコンプリートを機能させることができました。ただし、これは、2つの異なる入力に同じ名前を付けた場合にのみ機能します。したがって、あなたの場合、PreventChromeAutocompleteは2つの異なる入力に適用されている必要があります。非常に奇妙な...
Joe Heyming

11
<input readonly onfocus="this.removeAttribute('readonly');" type="text">

onfocusイベントと共にタグにreadonly属性を追加すると、タグが削除されて問題が修正されます


このソリューションはテキストフィールドで機能します
Denis Slonovschi

9

ユーザー名とパスワードの組み合わせの場合、これは簡単に解決できる問題です。Chromeヒューリスティックは次のパターンを探します。

<input type="text">

に続く:

<input type="password">

これを無効にして、このプロセスを単に中断します。

<input type="text">
<input type="text" onfocus="this.type='password'">

残念ながら、これはユーザー名/パスワードタイプのものだけに適用されます。Chromeはプレースホルダーテキストを調べて、何を提案すべきかを推測します。例:jsbin.com/jacizu/2/edit
kentcdodds

例が示すように、フィールドにブラウザーの候補を入力できることは有効であるため、これは実際にはOPの問題に対処していません。このソリューションは、トップアンサーの例のように、ブラウザーがユーザー名とパスワードのコンボを「自動的に」入力するのを防ぎます。これは一部のユーザーには役立つかもしれませんが、オートコンプリートを無効にするだけの最終的な解決策ではなく、Googleから取得する必要があります。
Bernesto 2015年

4
ただし、プレースホルダーテキストの前にスペースを追加すると、プレースホルダーに基づく自動提案も無効になります。間違いなくハックですが、他の提案と同じです。jsbin.com/pujasu/1/edit
Bernesto

実際には...あなたの例ではうまくいくように見えましたが、なぜか私には
うまくいき

ハ!それがハックと呼ばれる理由です...それが機能していない場所で共有できる例はありますか?
Bernesto 2015年

8

Mike Nelsons提供のソリューションは、Chrome 50.0.2661.102 mでは動作しませんでした。display:noneを設定して同じタイプのinput要素を追加するだけで、ネイティブブラウザーのオートコンプリートが無効になることはなくなりました。オートコンプリートを無効にしたい入力フィールドの名前属性を複製する必要があります。

また、フォーム要素内にあるときに入力フィールドが重複しないようにするには、表示されていない要素に無効を配置する必要があります。これにより、その要素がフォームアクションの一部として送信されなくなります。

<input name="dpart" disabled="disabled" type="password" style="display:none;">
<input name="dpart" type="password">
<input type="submit">

2016年6月とChrome 51.0.2704.106 mに関しては、これがここで唯一有効なソリューションです
Denis

しかし、フォームはあなたが必要とする正しい(目に見える)入力フィールドを選択するでしょうか?同じ名前だから。
AlexioVay 2016

@Vaia、無効な属性を複製要素に追加すると、送信されなくなります。
mccainz

8

2016年、Google Chrome autocomplete=offはW3Cにありますが無視し始めました。彼らが投稿した答え

ここでのトリッキーな部分は、Webの途中でautocomplete = offが多くのフォームフィールドのデフォルトになることです。ユーザーにとってそれが良いかどうかについてはまったく考えていません。これは、ブラウザーの自動入力データ(たとえば、CRMシステム)が不要なケースがそれほど有効ではないという意味ではありませんが、概して、それらを少数派ケースと見なします。その結果、Chrome Autofillデータのautocomplete = offを無視し始めました。

つまり、ユーザーが何を望んでいるかがよくわかります。

autocomplete = offが必要な場合に有効なユースケースを投稿するために別のバグをオープンしました

すべてのB2Bアプリケーション全体でオートコンプリートに関連する問題は見たことがありませんが、パスワードタイプの入力のみで問題が発生しました。

画面にパスワードフィールドがある場合でも、非表示のパスワードフィールドであっても、自動入力が機能します。このロジックを解除するには、独自のページロジックを解除しない場合、各パスワードフィールドを独自のフォームに配置します。

<input type=name >

<form>
    <input type=password >
</form>

4
あなたの答えは最新のものですので、それを追加してもらえますか、autocomplete="pineapple"それとも他の意味不明なことでも問題が解決するようです。少なくとも、それは私の側でした!
Douwe de Haan

1
@DouwedeHaanフォームが保存されるまでこれで問題ありません。その後、オートコンプリートが保存された「パイナップル」フィールドの推奨を提供します。しかし、たとえばオートコンプリート値にランダムハッシュを使用すると、これを回避できますか?
掘り出し物

@digout同意する。良い例は、この種のものにUUIDを使用することです。文字列が一意であることを確認してください!
Douwe de Haan

7

プレースホルダーの保持に問題があり、Chromeの自動入力を無効にしている場合、この回避策を見つけました。

問題

HTML

<div class="form">
    <input type="text" placeholder="name"><br>
    <input type="text" placeholder="email"><br>
    <input type="text" placeholder="street"><br>
</div>

http://jsfiddle.net/xmbvwfs6/1/

上記の例でも自動入力の問題が発生しrequired="required"ますが、CSSといくつかのCSSを使用すると、プレースホルダーを複製でき、Chromeはタグを取得しません。

解決

HTML

<div class="form">
    <input type="text" required="required">
    <label>Name</label>  
    <br>
    <input type="text" required="required">
    <label>Email</label>    
    <br>
    <input type="text" required="required">
    <label>Street</label>    
    <br>
</div>

CSS

input {
    margin-bottom: 10px;
    width: 200px;
    height: 20px;
    padding: 0 10px;
    font-size: 14px;
}
input + label {
    position: relative;
    left: -216px;
    color: #999;
    font-size: 14px;
}
input:invalid + label { 
    display: inline-block; 
}
input:valid + label { 
    display: none; 
}

http://jsfiddle.net/mwshpx1o/1/


これが実際に機能する唯一のソリューションです。私は本当にそれが好きではありませんが、それは私たちが今現在いる状態です:-(
kentcdodds

2017年現在、これはまだ正常に動作します。それだけで力にこのスクリプトを必要とするinput:「偽」プレースホルダをユーザーがクリックする場合の焦点$("label").on("click",function(){ $(this).prev().focus(); });に留意labelする前にすることはできませんinput...クロムはそれを見つけました!素敵なクリエイティブソリューション!+1
Louys Patrice Bessette 2017

7

私は本当に隠しフィールドを作るのは好きではありませんでした。そのようにすると本当に混乱しやすくなります。

オートコンプリートを停止する入力フィールドでは、これが機能します。フィールドを読み取り専用にし、フォーカス上でこのようにその属性を削除します

<input readonly onfocus="this.removeAttribute('readonly');" type="text">

これは、最初にフィールドを選択して読み取り専用属性を削除する必要があることを意味します。その時点で、ほとんどの場合、独自のユーザー入力を入力し、自動入力を無効にして引き継ぎます


1
残念ながら、これは機能しません:-( jsbin.com/sobise/edit?html,css,output
kentcdodds

7

以前に入力されたクロムでキャッシュされた値は、ドロップダウン選択リストとして表示されます。これはautocomplete = offで無効にできます。クロムの詳細設定で明示的に保存されたアドレスは、アドレスフィールドがフォーカスを取得したときにオートフィルポップアップを表示します。これはautocomplete = "false"で無効にできます。しかし、それはクロムがドロップダウンにキャッシュされた値を表示することを可能にします。

入力htmlフィールドで、次は両方をオフにします。

Role="presentation" & autocomplete="off"

アドレスの自動入力の入力フィールドを選択している間、Chromeは、ラベルhtml要素の前にない入力フィールドを無視します。

Chromeパーサーが自動入力アドレスポップアップの入力フィールドを無視するようにするには、ラベルとテキストボックスの間に非表示のボタンまたは画像コントロールを追加できます。これにより、自動入力のためのラベルと入力のペア作成のChrome解析シーケンスが中断されます。住所フィールドの解析中、チェックボックスは無視されます

Chromeでは、label要素の「for」属性も考慮されます。クロムの解析シーケンスを中断するために使用できます。


わたしは、あなたを愛しています。このページで実際に機能する唯一のソリューション。
Day Davis Waterbury、

2020年には動作しません
甲斐ノアック

7

まあ、私たち全員がこの問題を抱えているので、私はこの問題のために機能するjQuery拡張機能を書くために少し時間を費やしました。GoogleはGoogleをフォローするのではなく、HTMLマークアップをフォローする必要があります

(function ($) {

"use strict";

$.fn.autoCompleteFix = function(opt) {
    var ro = 'readonly', settings = $.extend({
        attribute : 'autocomplete',
        trigger : {
            disable : ["off"],
            enable : ["on"]
        },
        focus : function() {
            $(this).removeAttr(ro);
        },
        force : false
    }, opt);

    $(this).each(function(i, el) {
        el = $(el);

        if(el.is('form')) {
            var force = (-1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable))
            el.find('input').autoCompleteFix({force:force});
        } else {
            var disabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.disable);
            var enabled = -1 !== $.inArray(el.attr(settings.attribute), settings.trigger.enable);
            if (settings.force && !enabled || disabled)
                el.attr(ro, ro).focus(settings.focus).val("");
        }
    });
};
})(jQuery);

これを/js/jquery.extends.jsのようなファイルに追加するだけです jQueryを過ぎて含め。次のように、ドキュメントのロード時にそれを各フォーム要素に適用します。

$(function() {
    $('form').autoCompleteFix();
});

jsfiddleとテスト


6

jQuery私のために働いた次のコードを試してください。

if ($.browser.webkit) {
    $('input[name="password"]').attr('autocomplete', 'off');
    $('input[name="email"]').attr('autocomplete', 'off');
}

素晴らしい素晴らしいソリューション
DKR

autocomplete="off"jqueryを使用する代わりに、入力フィールドに追加するだけです。ちなみに、これは機能しません。Chromeのパスワード候補が引き続き表示されます。
カイノアック

6

これには2つの要素があります。Chromeや他のブラウザは、以前に入力されたフィールド名の値を記憶し、それに基づいてユーザーにオートコンプリートリストを提供します(特に、明らかな理由により、パスワードタイプの入力はこの方法では決して記憶されません)。autocomplete="off"メールフィールドなどでこれを防ぐために追加できます。

ただし、その場合はパスワードフィラーがあります。ほとんどのブラウザには独自の組み込み実装があり、この機能を提供するサードパーティのユーティリティも多数あります。これ、止められない。これは、後で自動的に入力されるようにこの情報を保存することを自分で選択するユーザーであり、アプリケーションの影響範囲および影響範囲から完全に外れています。


この回答の最初の部分は、もう真実ではないようです:Chromeバグ
ジョシュアドレイク

あなたが何をしているのか分かりません。この「バグ」は、Chromiumがの人々のユースケースを収集するための単なるプレースホルダーですautocomplete="off"。それはだ可能性意図は、それを削除することですが、それは、これまで明確に述べられていないのです、そしてその精神的な飛躍を必要とするものは確かにありません。彼らはそれを治療するための代替またはより良い方法を検討したいだけかもしれません。いずれにせよ、それはまだ仕様の一部であり、繰り返しますが、仕様から離れるという兆候もありません。また、Chromeを含め、私の知る限り、すべてのブラウザで引き続き機能します。
クリスプラット

Chromeがautocomplete = "off"を順守していない場合がいくつかあります。
ジョシュアドレイク

1.いくつかの事例事例は証拠にはなりません。2.回答で述べたように、フォーム入力拡張機能などはこれを尊重しない場合があり、そうでない場合があります。結局のところ、すべてのものと同様に、それはクライアント次第であり、したがってユーザー次第です。できることは、自動入力しないことを提案することです。
クリスプラット

6

あたりとしてクロムバグ報告#352347クロームもはや点autocomplete="off|false|anythingelse"、どちらの形式でも入力に。

私のために働いた唯一の解決策は、ダミーのパスワードフィールド追加することでした:

<input type="password" class="hidden" />
<input type="password" />

6

ここで機能するように設定autocompleteすることでoff、Googleが検索ページで使用する例があります。inspect要素からこれを見つけました。

ここに画像の説明を入力してください

編集off動作しない場合は、falseまたはを試してくださいnofill。私の場合、それはクロムバージョン48.0で動作しています


5

ここに汚いハックがあります-

ここに要素があります(disabled属性を追加):

<input type="text" name="test" id="test" disabled="disabled" />

次に、Webページの下部にJavaScriptを配置します。

<script>
    setTimeout(function(){
        document.getElementById('test').removeAttribute("disabled");
        },100);
</script>

5

異なるソリューション、Webkitベース。すでに述べたように、Chromeはパスワードフィールドを見つけると、メールをオートコンプリートします。AFAIK、これはautocomplete = [whatever]に関係ありません。

これを回避するには、入力タイプをテキストに変更し、Webkitセキュリティフォントを任意の形式で適用します。

.secure-font{
-webkit-text-security:disc;}

<input type ="text" class="secure-font">

これからわか​​るように、これは少なくともinput type = passwordと同じくらい安全であり、コピーアンドペーストで安全です。ただし、アスタリスクを削除するスタイルを削除することで脆弱です。もちろん、入力タイプ=パスワードをコンソールで簡単に入力タイプ=テキストに変更して、自動入力されたパスワードを表示できるため、実際にはほとんど同じです。


ありがとうございました!これがchrome 49で機能する唯一のものです。chromeがtype="password"現在すべての入力を満たしているように見えるため、以前のメソッドは壊れました。
epelc 2016年

4

私のために働く唯一の方法は:(jQueryが必要です)

$(document).ready(function(e) {
    if ($.browser.webkit) {
        $('#input_id').val(' ').val('');
    }
});

4

私は同じ問題に直面しました。そして、これがChromeの自動入力ユーザー名とパスワードを無効にするための解決策です(Chromeでのみテストされています)

    <!-- Just add this hidden field before password as a charmed solution to prevent auto-fill of browser on remembered password -->
    <input type="tel" hidden />
    <input type="password" ng-minlength="8" ng-maxlength="30" ng-model="user.password" name="password" class="form-control" required placeholder="Input password">

奇妙な修正ですが、どういうわけかそれは私にとって
Chrome
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.