Запам'ятовування пароля та евристика автозаповнення в Chrome


6

Що таке евристика Chrome, щоб вирішити зберегти дані форми для входу та автозаповнення під час наступного відвідування?

Якщо Chrome не зберігає облікові дані в певній формі, чому можуть бути причини? Я це знаю:

Експериментально, цього недостатньо: у мене є сторінка для входу (приватна, вибачте, але суть коду нижче), яка відповідає обом критеріям і де повноваження не завершені.


Ось моя специфічна проблема. Я вирішив це іншим способом (встановивши Автозаповнення і вводити облікові дані в форму), але я б хотів знати, чому 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() робити? Можливо, це змінить autocomplete атрибут назад? Що відбудеться, якщо ви зміните свій скрипт на document.querySelector("#foo_user").removeAttribute("autocomplete"); (і те ж саме для #foo_pass )? Нарешті, чи можна змінити час запуску користувача? Можливо, Chrome уже оцінив, чи потрібно автозаповнювати поле раніше Ваш користувацький скрипт запущений.
MattDMo

@MattDMo fooFunction застосовує лише деякі правила використання великих літер до імені користувача (не запитуйте мене, чому - ім'я користувача не залежить від регістру!). У будь-якому випадку видалення onkeyup атрибут не допоміг. Я також спробував видалити autocomplete атрибут взагалі (робив це першим, по суті) без успіху. Я поняття не маю, як змінити час запуску usercript.
Gilles

На основі коментарів до цього питання superuser.com/questions/457310/… схоже, ви не можете змусити Google Chrome робити те, що ви хочете. Але на це питання немає жодного пояснення, тому я не знаю, якими є фактичні критерії Chrome, що ви хотіли знати.
Ellie Kesselman

Відповіді:


1

Використовувати autocomplete = on розширення.

Змінює "autocomplete = off" на "autocomplete = on" на веб-сторінках, тому ваш   паролі будуть запам'ятовані.


Схоже, він може працювати - сподіваюся, він буде виконано перед користувальницьким скриптом, а значення не буде динамічно змінено пізніше в процесі завантаження сторінки.
MattDMo

1
Як і очікувалося, це не має значення. Я вже роблю те ж саме, що і це розширення. @MattDMo Це Chrome, usercript = розширення.
Gilles
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.