#html #mit-scratch #google-sites-2016
#HTML #mit-scratch #google-сайты-2016
Вопрос:
Контекст
Я создаю проект scratch со страницей входа на сайтах Google. Я использую forkphorus, чтобы я мог манипулировать выводом блока username. Я создал скрипт в своем проекте scratch, который выделяет строку имени пользователя (которая задается параметром URL) в переменные (на самом деле списки, но я не хочу все усложнять). Я не буду вдаваться в подробности, но скажем, что строка имени пользователя была такой:
username:hello password:world
Скрипт в проекте будет декодировать текст в кодировке URL в это:
username:hello password:world
И тогда для имени пользователя будет установлено значение hello, а для пароля — world.
Проблема
Однако я хочу, чтобы это работало с HTML-формой, встроенной на моем сайте Google. Когда я использую приведенный ниже код, он приводит меня к этому URL1, где я хочу перейти к этому URL2.
URL-адреса
1 https://forkphorus.github.io/app.html?uname=helloamp;pword=world
2 https://forkphorus.github.io/app.html?id=myprojectidamp;username=uname:hello pword:world
<!DOCTYPE html>
<html>
<body>
<form action="https://forkphorus.github.io/app.html?id=myprojectid">
<label for="uname">Username:</label><br>
<input type="text" id="uname" name="uname" value="hello"><br>
<label for="pword">Password:</label><br>
<input type="password" id="pword" name="pword" value="world"><br><br>
<input type="submit" value="Log in">
</form>
</body>
</html>
Мой вопрос
Как я могу изменить / добавить в свой код, чтобы перейти к желаемому URL, введя соответствующие значения в форму?
Комментарии:
1. Чтобы прикрепить идентификатор к запросу, используйте что-то вроде
<input name="id" type="hidden" value="myprojectid">
где-нибудь в форме2. Спасибо — есть идеи, как я мог бы скомпилировать два других входных параметра в username с помощью моего пользовательского разделителя?
3. Возможно, вы захотите добавить пользовательский прослушиватель для отправки формы и обрабатывать эти данные оттуда.
4. Извините, вы меня потеряли — мои знания html и веб-разработки довольно непостоянны.
Ответ №1:
Вы можете добавить пользовательскую логику отправки формы (политика Stackoverflow CORS не позволит действию отправки выполнять что-либо, однако оно должно работать где-либо еще):
document.querySelector(".info-form").addEventListener("submit", (event) => {
event.stopPropagation();
const username = encodeURIComponent(document.querySelector("#uname").value);
const password = encodeURIComponent(document.querySelector("#pword").value);
location.href = `https://forkphorus.github.io/app.html?id=myprojectidamp;username=${username}:hello pword:${password}`;
});
<form class="info-form" action="#">
<label for="uname">Username:</label><br>
<input type="text" id="uname" value="hello" required><br>
<label for="pword">Password:</label><br>
<input type="password" id="pword" value="world" required><br><br>
<input type="submit" value="Log in">
</form>