Saya baru saja menemukan bahwa jika Anda memiliki nama pengguna dan kata sandi yang diingat untuk sebuah situs, versi Chrome saat ini akan secara otomatis mengisi nama pengguna / alamat email Anda ke dalam bidang sebelumtype=password
bidang apa pun . Tidak peduli bidang apa yang disebut - anggap saja bidang tersebut sebelum kata sandi menjadi nama pengguna Anda.
Solusi lama
Cukup gunakan <form autocomplete="off">
dan itu mencegah kata sandi prefilling serta segala jenis pengisian heuristik bidang berdasarkan asumsi browser dapat membuat (yang sering salah). Berbeda dengan menggunakan <input autocomplete="off">
yang tampaknya cukup banyak diabaikan oleh autofill kata sandi (di Chrome, Firefox tidak mematuhinya).
Solusi Terbaru
Chrome sekarang mengabaikan <form autocomplete="off">
. Oleh karena itu solusi awal saya (yang telah saya hapus) sekarang menjadi hal yang populer.
Cukup buat beberapa bidang dan buat mereka disembunyikan dengan "display: none". Contoh:
<!-- 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"/>
Lalu letakkan bidang nyata Anda di bawahnya.
Ingatlah untuk menambahkan komentar atau orang lain di tim Anda akan bertanya-tanya apa yang Anda lakukan!
Pembaruan Maret 2016
Baru diuji dengan Chrome terbaru - semuanya baik. Ini adalah jawaban yang cukup lama sekarang tetapi saya hanya ingin menyebutkan bahwa tim kami telah menggunakannya selama bertahun-tahun sekarang di puluhan proyek. Ini masih berfungsi dengan baik meskipun ada beberapa komentar di bawah ini. Tidak ada masalah dengan aksesibilitas karena bidang display:none
berarti mereka tidak mendapatkan fokus. Seperti yang saya sebutkan, Anda harus meletakkannya di depan bidang Anda yang sebenarnya.
Jika Anda menggunakan javascript untuk memodifikasi formulir Anda, ada trik tambahan yang Anda perlukan. Perlihatkan bidang palsu saat Anda memanipulasi formulir dan kemudian sembunyikan lagi milidetik kemudian.
Kode contoh menggunakan jQuery (dengan asumsi Anda memberikan kelas bidang palsu Anda):
$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
},1);
Perbarui Juli 2018
Solusi saya tidak lagi berfungsi dengan baik karena para pakar anti-kegunaan Chrome telah bekerja keras. Tapi mereka telah memberi kita tulang dalam bentuk:
<input type="password" name="whatever" autocomplete="new-password" />
Ini berfungsi dan sebagian besar memecahkan masalah.
Namun, itu tidak berfungsi ketika Anda tidak memiliki bidang kata sandi tetapi hanya alamat email. Itu juga bisa sulit untuk membuatnya berhenti menjadi kuning dan prefilling. Solusi bidang palsu dapat digunakan untuk memperbaikinya.
Bahkan terkadang Anda harus memasukkan dua bidang palsu, dan mencobanya di tempat yang berbeda. Misalnya, saya sudah memiliki bidang palsu di awal formulir saya, tetapi Chrome baru-baru ini mulai mengisi kembali bidang 'Email' saya - jadi saya menggandakan dan memasukkan lebih banyak bidang palsu tepat sebelum bidang 'Email', dan itu memperbaikinya . Menghapus bidang pertama atau kedua bidang akan kembali ke pengisian otomatis terlalu banyak yang salah.
Perbarui Mar 2020
Tidak jelas apakah dan kapan solusi ini masih berfungsi. Tampaknya masih berfungsi kadang-kadang tetapi tidak setiap saat.
Dalam komentar di bawah ini Anda akan menemukan beberapa petunjuk. Satu yang baru saja ditambahkan oleh @anilyeni mungkin perlu diselidiki lebih lanjut:
Seperti yang saya perhatikan, autocomplete="off"
berfungsi di Chrome 80, JIKA ada kurang dari 3 elemen di <form>
. Saya tidak tahu apa logika atau di mana dokumentasi terkait tentang hal itu.
Yang ini dari @dubrox mungkin relevan, walaupun saya belum mengujinya:
terima kasih banyak untuk triknya, tapi tolong perbarui jawabannya, karena display:none;
tidak berfungsi lagi, tetapi position: fixed;top:-100px;left:-100px; width:5px;
tidak :)
Perbarui APRIL 2020
Nilai khusus untuk chrome untuk atribut ini adalah melakukan pekerjaan: (diuji pada input - tetapi tidak oleh saya)
autocomplete="chrome-off"