Я пытаюсь заставить расширение Chrome автоматически регистрировать веб-сайт (отправляя форму входа в систему), только в том случае, если у пользователя сохранены учетные данные для входа в браузер.
И поскольку учетные данные для входа (адрес электронной почты / пароль) заполняются в форме после загрузки веб-страницы, я использую JavaScript interval
после загрузки страницы, как предлагается здесь
Итак, мой код выглядит следующим образом:
//use 10 seconds interval waiting for the form to populate by the saved credentials:
var waitSeconds = 0;
var interval = setInterval(function () {
var inputEmail = document.getElementById('email');
var inputPass = document.getElementById('password');
console.log(
'inputEmail:', inputEmail, '\n',
'inputPass:', inputPass, '\n',
'inputEmail.value:', inputEmail.value, '\n',
'inputPass.value:', inputPass.value, '\n',
'inputEmail.defaultValue:', inputEmail.defaultValue, '\n',
'inputPass.defaultValue:', inputPass.defaultValue, '\n',
);
if (inputPass.defaultValue || inputPass.value) {
console.log('login credentials are saved at the browser!');
clearInterval(interval);
//click the form submit button here;
} else {
console.log('waiting...');
if (waitSeconds < 10) {
waitSeconds++;
} else {
clearInterval(interval);
console.log('10 seconds passed, timeout!');
}
}
}, 1000);
Я получаю в console
следующее:
inputEmail: <input autocomplete="email" type="email" id="email" value="myemail@example.com">
inputPass: <input autocomplete="password" type="password" id="password" value="myPasswordIsVisibleHere">
Но для inputEmail.value
, inputPass.value
, inputEmail.defaultValue
, inputPass.defaultValue
, иногда я получаю данные, а иногда ничего не получаю! просто пустые значения!
Я не могу знать, что иногда это происходит, а иногда нет, но, основываясь на некоторых наблюдениях, я заметил, что всякий раз, когда я выполняю ручное взаимодействие со страницей, он всегда заполняет значения вприставка!
Ручное взаимодействие с человеком может быть чем-то вроде (нажатие в любом месте страницы, ручная фокусировка ввода, нажатие F12, чтобы открыть инструменты разработчика, в течение 10 секунд interval
и т. Д.)
Isэто ручное взаимодействие является требованием Chrome в качестве меры безопасности, чтобы предотвратить кражу сохраненных учетных данных пользователей? Я не знаю!
Я пытался смоделировать человеческое взаимодействие программно, например:
$(inputEmail).keydown().keypress().keyup().blur().focus();
Также думал об использовании document.execCommand('paste')
, чтобы вставить пробел или что-то после значения,из отчаянного подхода!
Что я могу сделать ВСЕГДА, чтобы получить учетные данные и иметь согласованные функции входа в систему?
Есть ли лучший подход, который я должен использовать вместо этого?