Я помню, как видел способ сделать <input type="password" />
так, чтобы браузер не предлагал пользователю сохранить пароль. Но я рисую пустой. Есть ли атрибут HTML или какой-нибудь трюк JavaScript, который сделает это?
Ответы:
Попробуйте использовать autocomplete="off"
. Однако не уверен, что каждый браузер поддерживает это. Документы MSDN здесь .
РЕДАКТИРОВАТЬ : Примечание: большинство браузеров отказались от поддержки этого атрибута. См. Совместимо ли autocomplete = "off" со всеми современными браузерами?
Возможно, это следует оставить на усмотрение пользователя, а не дизайнера веб-сайта.
<input type="password" autocomplete="off" />
Я просто хотел бы добавить, что как пользователь я думаю, что это очень раздражает и неудобно. Я настоятельно рекомендую не использовать это, так как это, скорее всего, вызовет раздражение у ваших пользователей.
Пароли уже не хранятся в MRU, и правильно настроенные общедоступные машины даже не сохранят имя пользователя.
Решил по другому. Вы можете попробовать это.
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){
setTimeout(function(){
$("input#passfld").attr("type","password");
},10);
});
// or in pure javascript
window.onload=function(){
setTimeout(function(){
document.getElementById('passfld').type = 'password';
},10);
}
</script>
#по-другому
<script type="text/javascript">
function setAutoCompleteOFF(tm){
if(typeof tm =="undefined"){tm=10;}
try{
var inputs=$(".auto-complete-off,input[autocomplete=off]");
setTimeout(function(){
inputs.each(function(){
var old_value=$(this).attr("value");
var thisobj=$(this);
setTimeout(function(){
thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
thisobj.val(old_value);
},tm);
});
},tm);
}catch(e){}
}
$(function(){
setAutoCompleteOFF();
});
</script>
// вам нужно добавить атрибут autocomplete = "off" или вы можете добавить класс .auto-complete-off в поле ввода и наслаждаться
Пример:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
Я пробовал следующее, и кажется, что это работает в любом браузере:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
Этот способ намного безопаснее, чем использование методов тайм-аута, поскольку он гарантирует, что поле ввода уступит место паролю, когда пользователь сфокусирует его.
Что касается вопросов безопасности, вот что консультант по безопасности расскажет вам по всей проблеме (это результат фактического независимого аудита безопасности):
Автозаполнение HTML включено - для полей пароля в формах HTML включено автозаполнение. Большинство браузеров имеют возможность запоминать учетные данные пользователя, введенные в HTML-формы.
Относительный риск: низкий
Затронутые системы / устройства: o https: // * ** * *** /
Я также согласен, что это должно охватывать все поля, содержащие действительно личные данные. Я считаю, что это нормально заставлять человека всегда вводить информацию о своей кредитной карте, код CVC, пароли, имена пользователей и т. Д. Всякий раз, когда этот сайт собирается получить доступ ко всему, что должно быть защищено [универсально или в соответствии с требованиями законодательства]. Например: формы покупки, банковские / кредитные сайты, налоговые сайты, медицинские данные, федеральные, ядерные и т. Д. - не сайты, такие как Stack Overflow или Facebook.
Другие типы сайтов - например, TimeStar Online для учета рабочего времени и отсутствия работы - это глупо, поскольку я всегда использую один и тот же компьютер / учетную запись на работе, и я не могу сохранить учетные данные на этом сайте - как ни странно, я могу на своем Android но не на iPad. Даже на общих компьютерах это было бы не так уж плохо, поскольку синхронизация входа / выхода для кого-то на самом деле ничего не делает, кроме как раздражает вашего руководителя. (Они должны войти и удалить ошибочные удары - просто выберите не сохранять на общедоступных ПК).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Ну вот.
Вот лучший и самый простой ответ! Поместите дополнительное поле пароля перед своим input
полем и установите его display:none
так, чтобы, когда браузер заполнял его, он делал это в input
том месте, которое вам не нужно.
Измените это:
<input type="password" name="password" size="25" class="input" id="password" value="">
к этому:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
не работает для меня (Chrome 61 OSX), но это работает:<input type="password" style="position: absolute; top: -1000px;">
Прочтите также этот ответ, где он использует это простое решение, которое работает повсюду (см. Также исправление для мобильного телефона Safari):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
Вы можете использовать JQuery, выберите элемент по id:
$("input#Password").attr("autocomplete","off");
Или выберите товар по типу:
$("input[type='password']").attr("autocomplete","off");
Или также:
Вы можете использовать чистый Javascript:
document.getElementById('Password').autocomplete = 'off';
вы также можете использовать его следующим образом
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
видя, что autocomplete = off устарел, я предлагаю более новое решение.
Задайте для поля пароля обычное текстовое поле и замаскируйте ввод с помощью «дисков» с помощью CSS. код должен выглядеть так:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
Обратите внимание, что это может не работать должным образом в браузерах Firefox, и требуется дополнительное обходное решение. Подробнее об этом читайте здесь: https://stackoverflow.com/a/49304708/5477548 .
Решение было взято из этой ссылки , но, чтобы соответствовать SO "no-hotlinks", я резюмировал его здесь.
В случае большинства основных браузеров наличие ввода вне каких-либо форм и отсутствие связи с какими-либо формами заставляют браузер думать, что отправки не было. В этом случае вам придется использовать чистую JS-проверку для вашего входа в систему, а также потребуется шифрование ваших паролей.
Перед:
<form action="..."><input type="password"/></form>
После:
<input type="password"/>
Я нашел следующие работы в Firefox и Chrome.
<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>
Все это находится в разделе форм. "person" и "mypswd" - это то, что вы хотите, но браузер сохранит "userid" и "passwd" один раз и никогда больше, поскольку они не меняются. Вы можете исключить поле «человек», если оно вам действительно не нужно. В этом случае все, что вам нужно, это поле «mypswd», которое может изменяться каким-либо образом, известным пользователю вашей веб-страницы.
Единственный способ отключить автозаполнение в Firefox, Edge и Internet Explorer - это добавить autocomplete = "false" в формуляр, например:
<form action="postingpage.php" autocomplete="false" method="post">
и мне нужно добавить autocomplete = "off" в поле ввода формы и изменить тип на текст Как:
<input type="text" autocomplete="off">
Похоже, что этот html-код необходимо стандартизировать с браузерами. форму type = password следует изменить так, чтобы она перекрывала настройки браузера. Единственная проблема, с которой я столкнулся, это то, что я потерял маскировку ввода. Но с другой стороны, раздражающее «этот сайт небезопасен» не отображается в firefox.
для меня это не имеет большого значения, поскольку пользователь уже аутентифицирован, и его часть меняет имя пользователя и пароль