Отключение автозаполнения пароля формы, но не других полей - PullRequest
2 голосов
/ 07 декабря 2011

Я знаю, что вы можете отключить автозаполнение в форме, установив autocomplete="off" в самой форме.

Проблема, с которой я столкнулся, заключается в том, что я хочу запретить браузеру заполнять поле пароля, но не хочу отключать имя пользователя или другие поля.

Другая вещь, которую следует учитывать, это устаревшие данные.Использование autocomplete="off" в форме (или даже самого поля) не не мешает существующим пользователям с сохраненными паролями получить бесплатный пропуск.Или те, которые используют веб-инспектор, изменить значение автозаполнения и отправить, позволяя себе сохранить пароль.

Я знаю, что можно изменить атрибут поля name пароля на случайный / новый при каждом посещении.К сожалению, я работаю с серверной частью Java / Spring, и мне говорят, что это НЕ легко управлять без огромного рефакторинга / переопределения.

Как бы вы это разработали?Как бы вы обеспечили, чтобы поле всегда начиналось пустым?У браузеров нет единого способа уведомления о предварительном заполнении менеджера паролей - некоторые могут запускать onChange, другие - нет.

Полагаю, я могу перемещать поля с помощью javascript и создавать реальную формуна лету и отправьте его, но еще раз, это будет иметь последствия с весенней безопасностью и проверками и т. д. Есть еще идеи?

Ответы [ 3 ]

0 голосов
/ 07 января 2014

Мне нужно было найти это решение для IE 11 (так как он игнорирует атрибут autocomplete).Он отлично работает в других браузерах.На самом деле это больше обходной путь, но это работает.https://stackoverflow.com/a/20809203/1248536

0 голосов
/ 18 июля 2014

Недавно я столкнулся с этой проблемой, и не имея простого решения, поскольку мои поля могут быть предварительно заполнены, я хотел поделиться элегантным хаком, который придумал, установив тип пароля в событии ready.

ДонНе объявляйте поле ввода как тип пароля при его создании, но добавьте готовый прослушиватель событий, чтобы добавить его для вас:

function createSecretTextInput(name,parent){
    var createInput = document.createElement("input");
    createInput.setAttribute('name', name);
    createInput.setAttribute('class', 'secretText');
    createInput.setAttribute('id', name+'SecretText');
    createInput.setAttribute('value', 'test1234');

    if(parent==null)
       document.body.appendChild(createInput);
    else
        document.getElementById(parent).appendChild(createInput);

    $(function(){
        document.getElementById(name+'SecretText').setAttribute('type', 'password');
    });
};

createSecretTextInput('name', null);

http://jsfiddle.net/N9F4L/

0 голосов
/ 07 декабря 2011

вы можете создать временную переменную, когда вызывается onFocus, чтобы установить для переменной значение true (например, userFocus) и в атрибуте onChange, но в коротком коде для сброса «значения» в NULL, если userFocus == false) своего рода перебивает imo, но миг работает

EDIT

function reset()
{
if (document.getElementById("hidden").value!=" ")
{
document.getElementById("demo").value=" ";
}
else;
}

function getfocus()
{
document.getElementById("hidden").value=" ";
}
else;
}

<input type="password" id="pwd" onchange="reset()" onfocus="getfocus()"/>
<input type="hidden" id="hidden" value="not focus"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...