ฉันเพิ่งค้นพบว่าหากคุณมีชื่อผู้ใช้และรหัสผ่านที่จดจำได้สำหรับไซต์ Chrome เวอร์ชันปัจจุบันจะป้อนชื่อผู้ใช้ / ที่อยู่อีเมลของคุณในฟิลด์ก่อนtype=password
ฟิลด์ใด ๆโดยอัตโนมัติ มันไม่สนใจสิ่งที่เรียกว่าเขตข้อมูล - เพียงแค่ถือว่าเขตข้อมูลก่อนที่รหัสผ่านจะเป็นชื่อผู้ใช้ของคุณ
โซลูชั่นเก่า
เพียงแค่ใช้<form autocomplete="off">
และจะป้องกันการใส่รหัสผ่านล่วงหน้ารวมถึงการกรอกข้อมูลตามประเภทของฟิลด์ตามสมมติฐานที่เบราว์เซอร์อาจทำ (ซึ่งมักจะผิด) เมื่อเทียบกับการใช้<input autocomplete="off">
ซึ่งดูเหมือนว่าจะถูกละเว้นโดยป้อนรหัสผ่านโดยอัตโนมัติ (ใน Chrome นั่นคือ Firefox จะเชื่อฟัง)
โซลูชั่นที่อัปเดตแล้ว
<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"/>
จากนั้นให้วางเขตข้อมูลจริงของคุณไว้ด้านล่าง
อย่าลืมเพิ่มความคิดเห็นหรือคนอื่น ๆ ในทีมของคุณจะสงสัยว่าคุณกำลังทำอะไร!
อัปเดตมีนาคม 2559
เพิ่งทดสอบกับ Chrome ล่าสุด - ทั้งหมดดี นี่เป็นคำตอบที่ค่อนข้างเก่า แต่ฉันต้องการพูดถึงว่าทีมของเราใช้มันมาหลายปีแล้วในโครงการหลายสิบโครงการ มันยังใช้งานได้ดีแม้จะมีความคิดเห็นด้านล่าง ไม่มีปัญหาเกี่ยวกับการเข้าถึงได้เนื่องจากฟิลด์display:none
หมายถึงพวกเขาไม่ได้รับการมุ่งเน้น ดังที่ฉันได้กล่าวไปแล้วว่าคุณต้องวางมันไว้ข้างหน้าสนามจริงของคุณ
หากคุณใช้จาวาสคริปต์เพื่อแก้ไขแบบฟอร์มของคุณมีเคล็ดลับเพิ่มเติมที่คุณจะต้องมี แสดงเขตข้อมูลปลอมในขณะที่คุณกำลังจัดการกับแบบฟอร์มและจากนั้นซ่อนอีกครั้งหนึ่งมิลลิวินาทีในภายหลัง
โค้ดตัวอย่างโดยใช้ jQuery (สมมติว่าคุณให้คลาสปลอมในฟิลด์):
$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
},1);
อัปเดตกรกฎาคม 2561
โซลูชันของฉันใช้งานไม่ได้อีกต่อไปเนื่องจากผู้เชี่ยวชาญด้านการต่อต้านการใช้งานของ Chrome ทำงานหนัก แต่พวกเขาได้โยนเราในรูปแบบของ:
<input type="password" name="whatever" autocomplete="new-password" />
งานนี้และส่วนใหญ่แก้ปัญหา
อย่างไรก็ตามมันจะไม่ทำงานเมื่อคุณไม่มีฟิลด์รหัสผ่าน แต่เป็นเพียงที่อยู่อีเมล นั่นอาจเป็นเรื่องยากที่จะทำให้มันหยุดเหลืองและการเตรียมการล่วงหน้า โซลูชันฟิลด์ปลอมสามารถใช้เพื่อแก้ไขปัญหานี้
ในความเป็นจริงบางครั้งคุณจำเป็นต้องวางเขตข้อมูลปลอมจำนวนสองแห่งและลองใช้ในที่ต่างๆ ตัวอย่างเช่นฉันมีฟิลด์ปลอมอยู่ที่จุดเริ่มต้นของแบบฟอร์มของฉันแล้ว แต่เมื่อเร็ว ๆ นี้ Chrome ได้เริ่มต้นกรอกข้อมูลฟิลด์ 'อีเมล' ของฉันอีกครั้ง - ดังนั้นฉันจึงเพิ่มเป็นสองเท่าและใส่ในช่องปลอมมากขึ้นก่อนฟิลด์ 'อีเมล' . การลบล็อตแรกหรือล็อตที่สองของฟิลด์จะเปลี่ยนเป็นป้อนอัตโนมัติแบบ overzealous ที่ไม่ถูกต้อง
อัพเดท มี.ค. 2563
ยังไม่ชัดเจนว่าเมื่อใดและเมื่อใดโซลูชันนี้ยังใช้งานได้ ดูเหมือนว่าจะยังคงทำงานบางครั้ง แต่ไม่ตลอดเวลา
ในความคิดเห็นด้านล่างคุณจะพบคำแนะนำเล็กน้อย หนึ่งที่เพิ่มโดย @anilyeni อาจคุ้มค่ากับการตรวจสอบเพิ่มเติม:
ตามที่ฉันสังเกตเห็นautocomplete="off"
ทำงานบน Chrome 80 หากมีองค์ประกอบน้อยกว่า 3 <form>
ตัว ฉันไม่รู้ว่าอะไรเป็นตรรกะหรือเอกสารที่เกี่ยวข้องเกี่ยวกับมัน
นอกจากนี้รายการนี้จาก @dubrox อาจเกี่ยวข้องด้วยแม้ว่าฉันจะยังไม่ได้ทดสอบ:
ขอบคุณมากสำหรับเคล็ดลับ แต่โปรดอัปเดตคำตอบเพราะdisplay:none;
มันใช้งานไม่ได้อีกต่อไป แต่position: fixed;top:-100px;left:-100px; width:5px;
ทำ :)
อัปเดต APRIL 2020
ค่าพิเศษสำหรับ chrome สำหรับคุณลักษณะนี้กำลังทำงาน: (ทดสอบกับอินพุต - แต่ไม่ใช่โดยฉัน)
autocomplete="chrome-off"