Я знайшов повне рішення цього питання. (Я тестував це в Chrome 27 і Firefox 21).
Слід знати дві речі:
- Тригер "Зберегти пароль" та
- Відновити збережене ім’я користувача / пароль
1. Тригер "Зберегти пароль":
У Firefox 21 "Зберегти пароль" спрацьовує, коли виявляється, що існує форма, що містить поле введення тексту та поле введення пароля. Тому нам просто потрібно користуватися
$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});
someFunctionForLogin()
чи робить логін ajax та перезавантажує / перенаправляє на сторінку, на якій підписався, в той час як event.preventDefault()
блокує оригінальне перенаправлення через подання форми.
Якщо ви маєте справу лише з Firefox, вищезазначеного рішення достатньо, але воно не працює в Chrome 27. Тоді ви запитаєте, як запустити "Зберегти пароль" у Chrome 27.
Для Chrome 27 "Зберегти пароль" ініціюється після його перенаправлення на сторінку, подавши форму, яка містить текстове поле введення з атрибутом name = "ім'я користувача" та поле пароля для введення з атрибутом = = "пароль" . Таким чином, ми не можемо заблокувати перенаправлення через подання форми, але ми можемо зробити перенаправлення після того, як ми виконали вхід у ajax. (Якщо ви хочете, щоб логін Ajax не перезавантажував сторінку або не перенаправляв її на сторінку, на жаль, моє рішення не працює.) Тоді ми можемо використовувати
<form id='loginForm' action='signedIn.xxx' method='post'>
<input type='text' name='username'>
<input type='password' name='password'>
<button id='loginButton' type='button'>Login</button>
</form>
<script>
$('#loginButton').click(someFunctionForLogin);
function someFunctionForLogin(){
if(/*ajax login success*/) {
$('#loginForm').submit();
}
else {
//do something to show login fail(e.g. display fail messages)
}
}
</script>
Кнопка з type = 'button' призведе до того, що форма не надсилається при натисканні кнопки. Потім, прив’язуючи функцію до кнопки для входу в ajax. Нарешті, виклик $('#loginForm').submit();
переспрямувань на сторінку, на яку ви ввійшли. Якщо сторінка, на якій зареєстровано, є поточною сторінкою, ви можете замінити "підписаний.xxx" на поточну сторінку, щоб зробити "оновлення".
Тепер ви побачите, що метод для Chrome 27 також працює у Firefox 21. Тому краще використовувати його.
2. Відновіть збережене ім’я користувача / пароль:
Якщо у вас вже є жорсткий код для входу в систему як loginForm, то ви не знайдете жодної проблеми відновити збережений пароль у loginForm.
Однак збережені ім'я користувача / пароль не будуть прив’язані до loginForm, якщо ви використовуєте js / jquery для того, щоб зробити реєстраційну форму динамічно, оскільки збережені ім’я користувача / пароль прив'язуються лише тоді, коли документ завантажується.
Тому вам потрібно було жорстко кодувати loginForm як HTML і використовувати js / jquery для переміщення / показу / приховування форми входу динамічно.
Зауваження:
Якщо ви робите вхід у ajax, не додайте його autocomplete='off'
у форму тегів, як
<form id='loginForm' action='signedIn.xxx' autocomplete='off'>
autocomplete='off'
змусить відновити ім'я користувача / пароль в loginForm не вдатися, оскільки ви не дозволяєте йому "автоматично доповнювати" ім'я користувача / пароль.