Що таке евристика Chrome, щоб вирішити зберегти дані форми для входу та автозаповнення під час наступного відвідування?
Якщо Chrome не зберігає облікові дані в певній формі, чому можуть бути причини? Я це знаю:
- поля імені користувача та пароля повинен мати
autocomplete="on"
; - форма повинен мати
method="POST"
.
Експериментально, цього недостатньо: у мене є сторінка для входу (приватна, вибачте, але суть коду нижче), яка відповідає обом критеріям і де повноваження не завершені.
Ось моя специфічна проблема. Я вирішив це іншим способом (встановивши Автозаповнення і вводити облікові дані в форму), але я б хотів знати, чому Chrome не пропонує зберігати облікові дані.
Веб-сайт (не написаний мною, а не доступний для загального доступу) вимагає ім'я користувача та пароль. У ньому використовується форма, яка виглядає досить стандартною (для моїх невідомих очей), яка виглядає наступним чином (я пропустив багато вкладених <div>
і ще що-небудь, а також атрибути і функції, показані тут як fooXXX
були перейменовані мною).
<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">
<table>
<tr>
<td>Username:</td>
<td><input name="foo$name" type="text" id="foo_name" tabindex="1" autocomplete="off" onkeyup="fooFunction()" style="width:175px;" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input name="foo@pass" type="password" id="foo_pass" tabindex="2" value="" autocomplete="off" style="width:175px;" /></td>
</tr>
</table>
</form>
Я хочу, щоб мої веб-переглядачі запам'ятовували мої облікові дані для цього сайту. Ця функція ввімкнена в браузері, але є щось особливе для цього сайту, що призводить до того, що Firefox і Chrome не пропонують запам'ятовувати ім'я та пароль.
Я написав користувальницький скрипт (Greasemonkey скрипт у Firefox, розпакований розширення в Chrome), щоб змінити autocomplete="off"
до autocomplete="on"
:
document.querySelector("#foo_user").setAttribute("autocomplete", "on");
document.querySelector("#foo_pass").setAttribute("autocomplete", "on");
У Firefox це має бажаний ефект: Firefox пропонує запам'ятовувати пароль, і наступного разу, коли я відвідую сторінку входу, мої облікові дані автоматично заповнюються.
У Chrome немає такої удачі (27.0.1453.93, Linux). Я не отримую запит на запам'ятовування пароля і не отримую історію для поля імені користувача. Я підтвердив, що скрипт виконується шляхом перевірки input
елементи, вони показують autocomplete="on"
.
Я спробував додати ці рядки до мого usercript, але вони не покращують ситуацію.
document.querySelector("#foo_user").removeAttribute("onkeyup");
document.querySelector("#foo_pass").removeAttribute("value");
Як відрізняються евристики Chrome від Firefox, і як я змушую його запам'ятовувати мої облікові дані?
fooFunction
застосовує лише деякі правила використання великих літер до імені користувача (не запитуйте мене, чому - ім'я користувача не залежить від регістру!). У будь-якому випадку видалення onkeyup
атрибут не допоміг. Я також спробував видалити autocomplete
атрибут взагалі (робив це першим, по суті) без успіху. Я поняття не маю, як змінити час запуску usercript.
fooFunction()
робити? Можливо, це змінитьautocomplete
атрибут назад? Що відбудеться, якщо ви зміните свій скрипт наdocument.querySelector("#foo_user").removeAttribute("autocomplete");
(і те ж саме для#foo_pass
)? Нарешті, чи можна змінити час запуску користувача? Можливо, Chrome уже оцінив, чи потрібно автозаповнювати поле раніше Ваш користувацький скрипт запущений.