html خصائص - كيف تقوم بتعطيل الإكمال التلقائي للمتصفح على حقل / إشارة إدخال نموذج الويب؟




في input (25)

يتجاهل Firefox 30 autocomplete="off" لكلمات المرور ، ويختار مطالبة المستخدم بدلاً من ذلك بتخزين كلمة المرور على العميل. لاحظ commentary التالي من 5 مايو 2014:

  • يطلب مدير كلمة المرور دائمًا ما إذا كان يريد حفظ كلمة المرور. لا يتم حفظ كلمات المرور بدون إذن من المستخدم.
  • نحن المتصفح الثالث لتنفيذ هذا التغيير ، بعد IE و Chrome.

وفقًا لمستندات مطوري Mozilla ، تمنع autocomplete لسمة النموذج بيانات النموذج من التخزين المؤقت في المتصفحات القديمة.

<input type="text" name="foo" autocomplete="off" />

كيف يمكنك تعطيل autocomplete في المتصفحات الرئيسية input محدد (أو form field


أفضل حل:

منع اسم المستخدم التلقائي (أو البريد الإلكتروني) وكلمة المرور:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

منع الإكمال التلقائي لأحد الحقول:

<input type="text" name="field" autocomplete="nope">

Explanation: autocomplete يستمر في العمل في <input> ، autocomplete="off" لا يعمل ، ولكن يمكنك تغييره إلى سلسلة عشوائية ، مثل nope .

يعمل في:

  • Chrome: 49 و 50 و 51 و 52 و 53 و 54 و 55 و 56 و 57 و 58 و 59 و 60 و 61 و 62 و 63 و 64

  • Firefox: 44 و 45 و 46 و 47 و 48 و 49 و 50 و 51 و 52 و 53 و 54 و 55 و 56 و 57 و 58


إضافة autocomplete="off" لن يتم قطعها.

تغيير سمة نوع الإدخال للكتابة type="search" .
لا تطبق Google الملء التلقائي للإدخالات من خلال نوع من البحث.


أعتقد أن autocomplete=off معتمد في HTML 5.

اسأل نفسك لماذا تريد أن تفعل هذا على الرغم من - قد يكون من المنطقي في بعض الحالات ولكن لا تفعل ذلك فقط من أجل القيام بذلك.

إنه أقل ملاءمة للمستخدمين ولا حتى مشكلة أمنية في OS X (المذكورة بواسطة Soren أدناه). إذا كنت قلقًا بشأن سرقة الأشخاص الذين يستخدمون كلمات مرورهم عن بُعد - فلا يزال بإمكان أداة ضغط المفاتيح إجراء ذلك على الرغم من أن تطبيقك يستخدم autcomplete=off .

بصفتك مستخدمًا يختار أن يتذكر متصفحًا (معظمه) معلوماتي ، سأجده مزعجًا إذا لم يتذكر موقعك الإلكتروني.


حاول أن تضيف

readonly onfocus = "this.removeAttribute ('readonly')؛"

بالإضافة إلى

الإكمال التلقائي = "إيقاف"

لإدخال (ق) التي كنت لا تريد أن تذكر بيانات النموذج ( username، password، الخ) كما هو مبين أدناه:

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


تحديث: وهنا مثال الكامل أدناه على أساس هذا النهج الذي يمنع من السحب والإسقاط ، نسخة ، لصق ، الخ

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

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

تم اختباره على أحدث الإصدارات من المتصفحات الرئيسية Google Chrome، مثل Mozilla Firefox، Microsoft Edge، وما إلى ذلك ، والعمل دون أي مشكلة. أتمنى أن يساعدك هذا...


ثلاثة خيارات: أولا:

<input type='text' autocomplete='off' />

ثانيا:

<form action='' autocomplete='off'>

الثالث (كود جافا سكريبت):

$('input').attr('autocomplete', 'off');

بالإضافة إلى autocomplete=off ، يمكن أيضًا أن يتم اختيار أسماء حقول النماذج بشكل عشوائي من خلال الشفرة التي تنشئ الصفحة ، ربما عن طريق إضافة بعض السلسلة الخاصة بالجلسة إلى نهاية الأسماء.

عندما يتم إرسال النموذج ، يمكنك إزالة هذا الجزء قبل معالجته على جانب الخادم. سيؤدي ذلك إلى منع متصفح الويب من العثور على سياق لحقلك ، وقد يساعد أيضًا في منع هجمات XSRF لأن المهاجم لن يتمكن من تخمين أسماء الحقول لإرسال النموذج.


معظم المتصفحات الرئيسية ومديرو كلمة المرور (بشكل صحيح ، IMHO) الآن تجاهل autocomplete=off .

لماذا ا؟ أضاف العديد من البنوك والمواقع الأخرى "عالية الأمان" autocomplete=off إلى صفحات تسجيل الدخول الخاصة بهم "لأغراض أمنية" ، ولكن هذا يقلل من الأمان في الواقع لأنه يجعل الناس يغيرون كلمات المرور على هذه المواقع عالية الأمان ليكون من السهل تذكرها (وبالتالي ) حيث تم تعطيل الإكمال التلقائي.

منذ فترة طويلة ، بدأ معظم مدراء كلمات المرور في تجاهل autocomplete=off ، والآن بدأت المتصفحات في القيام بنفس الشيء لإدخال اسم المستخدم / كلمة المرور فقط.

لسوء الحظ ، فإن الأخطاء في عمليات الإكمال التلقائي تُدخل معلومات اسم المستخدم و / أو كلمة المرور في حقول نماذج غير مناسبة ، مما يتسبب في أخطاء التحقق من صحة النموذج ، أو الأسوأ من ذلك ، إدخال أسماء المستخدمين بطريق الخطأ في الحقول التي تركها المستخدم فارغة عن قصد.

ما هو مطور الويب أن تفعل؟

  • إذا كان بإمكانك الاحتفاظ بجميع حقول كلمات المرور على الصفحة من تلقاء نفسها ، فستكون هذه بداية رائعة حيث يبدو أن وجود حقل كلمة المرور هو المشغل الرئيسي لإكمال الإكمال التلقائي للمستخدم / المرور ، وإلا ، اقرأ النصائح أدناه.
  • لاحظ Safari أن هناك حقلان لكلمة المرور ويعطل الإكمال التلقائي في هذه الحالة ، على افتراض أنه يجب أن يكون نموذج تغيير كلمة المرور ، وليس نموذج تسجيل الدخول. لذلك تأكد فقط من استخدام حقلي كلمة المرور (جديد وتأكيد جديد) لأية نماذج تسمح بها
  • سيحاول Chrome 34 ، للأسف ، تعبئة الحقول تلقائيًا باستخدام user / pass عندما يرى حقل كلمة المرور. هذا هو علة سيئة تماما على أمل أن يغيروا سلوك سفاري. ومع ذلك ، يبدو أن إضافة هذا إلى أعلى النموذج يؤدي إلى تعطيل الملء التلقائي لكلمة المرور:

    <input type="text" style="display:none">
    <input type="password" style="display:none">
    

لم أقم بعد بالتحقيق في IE أو Firefox ولكن سيكون من دواعي سرورنا تحديث الإجابة إذا كان لدى الآخرين معلومات في التعليقات.


كانت طريقة غير قياسية للقيام بذلك (أعتقد أن Mozilla و Internet Explorer لا يزالان يدعمان ذلك) ولكن العبث بتوقعات المستخدمين هو فكرة سيئة.

إذا أدخل المستخدم تفاصيل بطاقة الائتمان الخاصة به في نموذج ، ثم دع شخصًا آخر يستخدم هذا المتصفح ، فهذا لا يهمك. :)


يتمثل الحل الخاص بـ Chrome في إضافة autocomplete="new-password" إلى كلمة مرور نوع الإدخال.

مثال:

<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>

يعمل Chrome دائمًا على إتمام البيانات تلقائيًا إذا عثر على مربع من نوع كلمة المرور ، وهو ما يكفي للإشارة إلى ذلك المربع " autocomplete = "new-password" .

هذا يعمل جيدا لي.

ملاحظة: تأكد من أن F12 تصبح التغييرات سارية المفعول ، فالمتصفحات عدة مرات تحفظ الصفحة في ذاكرة التخزين المؤقت ، وهذا أعطاني انطباعًا سيئًا عن عدم نجاحها ، ولكن المتصفح لم يجلب التغييرات فعليًا.


جرب هذه أيضًا إذا كان autocomplete="off" لا يعمل:

autocorrect="off" autocapitalize="off" autocomplete="off"

<form name="form1" id="form1" method="post" 
      autocomplete="off" action="http://www.example.com/form.cgi">

هذا سيعمل في Internet Explorer و Mozilla FireFox ، الجانب السلبي هو أنه ليس معيار XHTML.


هذه مشكلة أمنية تتجاهلها المتصفحات الآن. تقوم المتصفحات بتحديد المحتوى وتخزينه باستخدام أسماء الإدخال ، حتى إذا اعتبر المطورون أن المعلومات حساسة ويجب عدم تخزينها. سيؤدي إدخال اسم إدخال مختلف بين طلبين إلى حل المشكلة (ولكن سيظل محفوظًا في ذاكرة التخزين المؤقت للمتصفح وسيؤدي أيضًا إلى زيادة ذاكرة التخزين المؤقت للمتصفح). إن مطالبة المستخدم بتنشيط أو إلغاء تنشيط الخيارات في إعدادات المتصفح الخاص به ليس حلا جيدا. يمكن إصلاح المشكلة في الخلفية.

وهنا حل بلدي. نهج قمت بتطبيقه في إطار العمل الخاص بي. يتم إنشاء جميع عناصر الإكمال التلقائي بإدخال مخفي مثل هذا:

<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
    <input type="text" name="<? echo $r; ?>" />
    <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
    <input type="submit" name="submit" value="submit" />
</form>

ثم يقوم الخادم بمعالجة متغيرات الوظائف مثل:

foreach ($_POST as $key => $val)
{
    if(preg_match('#^__autocomplete_fix_#', $key) === 1){
        $n = substr($key, 19);
        if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
    }
}

يمكن الوصول إلى القيمة كالمعتاد

var_dump($_POST['username']);

ولن يتمكن المتصفح من اقتراح معلومات من الطلب السابق أو من مستخدمين سابقين.

جميع الأعمال مثل السحر ، حتى إذا كانت المستجدات التحديثات ، ترغب في تجاهل الإكمال التلقائي أم لا. لقد كان ذلك أفضل طريقة لإصلاح المشكلة بالنسبة لي.


لم ينجح أي من الحلول في هذه المحادثة.

لقد توصلت أخيراً إلى حل HTML خالص لا يتطلب جافا سكريبت ، يعمل في المتصفحات الحديثة (باستثناء IE ؛ كان هناك ما لا يقل عن 1 catch ، أليس كذلك؟) ، ولا يتطلب منك تعطيل الإكمال التلقائي للنموذج بأكمله.

ما عليك سوى إيقاف تشغيل الإكمال التلقائي في form ثم تشغيله لأي input ترغب في أن يعمل به داخل النموذج. فمثلا:

<form autocomplete="off">
    <!-- these inputs will not allow autocomplete and chrome 
         won't highlight them yellow! -->
    <input name="username"  />
    <input name="password" type="password" />
    <!-- this field will allow autocomplete to work even 
         though we've disabled it on the form -->
    <input name="another_field" autocomplete="on" />
</form>

لم يعمل أي من الاختراقين المذكورين هنا في Chrome. هناك مناقشة للمشكلة هنا: https://code.google.com/p/chromium/issues/detail?id=468153#c41

إضافة هذا داخل <form>أعمال (على الأقل حتى الآن):

<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username" 
    autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" 
    oncopy="return false" ondrag="return false" ondrop="return false" 
    onpaste="return false" oncontextmenu="return false" > 

<input type="password" name="Password" placeholder="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" oncopy="return false" ondrag="return false" 
    ondrop="return false" onpaste="return false" oncontextmenu="return false" >

لا أستطيع أن أصدق أن هذا ما زال يمثل مشكلة بعد فترة طويلة من الإبلاغ عنه. الحلول المذكورة أعلاه لم تنجح بالنسبة لي ، حيث بدا أن رحلات السفاري تعرف عندما لا يتم عرض العنصر أو خارج الشاشة ، ومع ذلك فإن ما يلي يعمل بالنسبة لي:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

آمل أن يكون مفيدا لشخص ما!


هذا يعمل بالنسبة لي.

<input name="pass" type="password" autocomplete="new-password" />

يمكننا أيضا استخدام هذه الاستراتيجية في الضوابط الأخرى مثل النص ، حدد الخ


لقد كنت أحاول حلولاً لا نهائية ، ثم وجدت هذا:

بدلاً من autocomplete="off" ما autocomplete="false" سوى استخدام autocomplete="false"

بهذه البساطة ، ويعمل مثل السحر في Google Chrome أيضًا!


لتجنب XHTML غير صالح ، يمكنك تعيين هذه السمة باستخدام javascript. مثال باستخدام jQuery:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

المشكلة هي أن المستخدمين بدون javascript سيحصلون على وظيفة الإكمال التلقائي.


مضيفا

autocomplete="off"

إلى علامة النموذج سيعطل الإكمال التلقائي للمتصفح (ما تم كتابته مسبقًا في هذا الحقل) من جميع حقول input داخل هذا النموذج المعين.

اختبارها على:

  • Firefox 3.5، 4 BETA
  • Internet Explorer 8
  • كروم

تأخرت قليلاً في اللعبة ... لكنني ركضت للتو في هذه المشكلة وحاولت عدة إخفاقات ، لكن هذا يعمل لي على MDN

في بعض الحالات ، يستمر المتصفح في اقتراح قيم الإكمال التلقائي حتى إذا تم تعيين سمة الإكمال التلقائي على الإيقاف. قد يكون هذا السلوك غير المتوقع محيرًا تمامًا للمطورين. الخدعة لفرض عدم الإكمال هي تعيين سلسلة عشوائية إلى السمة كما يلي:

autocomplete="nope"

استخدم اسمًا ومعرفًا غير قياسيين للحقول ، بدلاً من أن يكون "name" "name_". عندئذ لن ترى المتصفحات أنها حقل الاسم. وأفضل ما في الأمر هو أنه يمكنك إجراء ذلك على بعض الحقول وليس جميعها ، وستقوم بالإكمال التلقائي لبعض الحقول وليس كلها.


يمكنك استخدام في المدخلات.

فمثلا؛

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}

كما قال الآخرون ، فإن الإجابة هي autocomplete="off"

ومع ذلك ، أعتقد أنه من الجدير ذكر السبب في أنه من الجيد استخدام هذا في بعض الحالات حيث أن بعض الإجابات على هذا السؤال واقترح أسئلة duplicate أنه من الأفضل عدم إيقاف تشغيله.

لا ينبغي أن يترك للمستخدمين إيقاف المتصفحات التي تخزن أرقام بطاقات الائتمان. الكثير من المستخدمين لن يدركوا أنها مشكلة.

من المهم بشكل خاص إيقاف تشغيلها في الحقول للحصول على رموز أمان بطاقات الائتمان. كما تنص هذه الصفحة :

"لا تخزن رمز الحماية مطلقًا ... تعتمد قيمته على افتراض أن الطريقة الوحيدة لتزويده هي قراءته من بطاقة الائتمان الفعلية ، مما يثبت أن الشخص الذي يورده يحمل البطاقة فعليًا".

تكمن المشكلة في أنه إذا كان الكمبيوتر العام (مقهى إنترنت ، مكتبة ، إلخ) فمن السهل على المستخدمين الآخرين سرقة تفاصيل بطاقتك ، وحتى على جهازك الخاص ، يمكن لموقع خبيث أن يسرق بيانات الإكمال التلقائي .


I've faced same problem. And here is the solution for disable auto-fill user name & password on Chrome (just tested with Chrome only)

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




html browser autocomplete