#javascript #google-chrome #google-chrome-extension #autocomplete #webkit
#javascript #google-chrome #google-chrome-extension #автозаполнение #webkit
Вопрос:
Я пишу расширение Chrome для автоматического входа в систему. Для входа на веб-сайт, на который я ориентируюсь, вам нужно ввести: имя пользователя, пароль и студенческий билет. Поскольку Chrome автоматически заполняет только имя пользователя и пароль, я разработал небольшое расширение, которое вводит идентификатор студента и нажимает кнопку входа.
Я решил позволить своему расширению обрабатывать только идентификатор студента, который не сохраняется Chrome автоматически, и позволить браузеру Chrome сохранить пользователя и пароль в безопасности. даже при этом я храню все в локальном хранилище. и что на стороне сервера нет
Я заметил, что даже при автозаполнении значения вставляются, и они появляются на экране, пользователь должен нажать любую кнопку клавиатуры / мыши, чтобы значения вызывали событие «изменить», и вводимые данные будут иметь правильное значение.
Я пытаюсь имитировать это, но, к сожалению, без какого-либо успеха, вызывая событие focus / select / change .
мой background.js:
var bgUserIDKey="OUAL_USER_ID"
var currentURL="";
var sendClick = "document.getElementsByTagName('input')[3].click();";
var triggerOnChange="$('#p_sisma').trigger('keydown');$('#p_user').trigger('keydown');";
function BackgroundLogin(){
if (currentURL.includes("sso.apps.openu.ac.il/SheiltaPortalLogin?"))
{
this.SendScriptIntoActiveTab({code:"document.getElementById('p_mis_student').value=" GetUserID() ";"});
setTimeout(function(){
this.SendScriptIntoActiveTab({code:sendClick});
this.SendScriptIntoActiveTab({code:this.triggerOnChange});
this.SendScriptIntoActiveTab({code:"document.getElementById('p_mis_student').value=" GetUserID() ";"});
BackgroundLogin();
},350);
console.log("OUAL Auto logged in.")
}
}
он вводит идентификатор и, как вы можете видеть, пытается войти в систему каждые 350 мс,
когда это имитирует кнопку отправки, веб-сайт не распознает имя пользователя и пароль и работает только после любого нажатия на клавиатуре или щелчка мышью по любой программе на странице.
без какого-либо ввода от пользователя форма может «видеть» только идентификатор студента без имени пользователя и пароля, даже если они вставлены. Я перепробовал несколько решений, которые нашел в Интернете, но, похоже, ничего не работает.
Есть идеи?
Комментарии:
1. сфокусируйте элемент и используйте document.execCommand с параметром insertText.
2. @wOxxOm ты говоришь об идентификаторе студента? поскольку этот параметр вставляется просто отлично. моя проблема в имени пользователя и пароле. Я прикрепил изображение
3. Я предлагаю использовать это вместо прямых назначений
value
.4. @wOxxOm проблема в том, что я не храню в своем расширении имя пользователя и пароль, а только идентификатор студента (даже если я храню его только в локальном хранилище) из соображений безопасности. Я не хочу, чтобы мое расширение обрабатывало конфиденциальные данные.
5. Я не понимаю, как эти возражения связаны с моим предложением. Вы уже пробовали это? Это должно быть так же просто, как код:»document.getElementById(‘p_mis_student’).focus(); document.execCommand(‘insertText’, false, ‘» GetUserID() «‘)»});