Made a fully working captcha refreshing script.
This commit is contained in:
parent
05bcb7835d
commit
f24ad3d883
@ -1,30 +1,41 @@
|
||||
const g_captcha_timeout_seconds = 600;
|
||||
let g_captcha_timeout_remain = g_captcha_timeout_seconds;
|
||||
|
||||
const captcha_hidden_field = document.forms[0].children[4].children[0];
|
||||
|
||||
let g_current_captcha_id = captcha_hidden_field.value;
|
||||
|
||||
async function getNewCaptcha() {
|
||||
const id = await fetch("/captcha/").then(r => r.text());
|
||||
g_current_captcha_id = id;
|
||||
captcha_hidden_field.value = id;
|
||||
setTimeout(() => { captcha_img.src = `/captcha/${id}/image` }, 600);
|
||||
g_captcha_timeout_remain = g_captcha_timeout_seconds;
|
||||
}
|
||||
|
||||
const captcha_span = document.getElementsByClassName("captcha")[0];
|
||||
const captcha_img = captcha_span.children[1];
|
||||
|
||||
captcha_span.classList.toggle("refresh");
|
||||
captcha_span.children[3].innerHTML
|
||||
= `<button id="refresh">Refresh</button>ed in <b><span id="remain">600</span></b> seconds.`;
|
||||
|
||||
const captcha_refresh = document.getElementById("refresh");
|
||||
const captcha_remain = document.getElementById("remain");
|
||||
|
||||
const g_captcha_timeout_seconds = 600;
|
||||
let g_captcha_timeout_remain = g_captcha_timeout_seconds;
|
||||
|
||||
async function newCaptcha() {
|
||||
const id = await fetch("/captcha/").then(r => r.text());
|
||||
setTimeout(() => { captcha_img.src = `/captcha/${id}/image` }, 400);
|
||||
g_captcha_timeout_remain = g_captcha_timeout_seconds;
|
||||
}
|
||||
|
||||
captcha_span.classList.toggle("refresh");
|
||||
captcha_refresh.classList.toggle("refresh");
|
||||
captcha_refresh.addEventListener("click", async e => {
|
||||
e.preventDefault();
|
||||
await newCaptcha();
|
||||
captcha_refresh.disabled = true;
|
||||
// Checking if CAPTCHA is solved deletes it.
|
||||
setTimeout(async () => {
|
||||
captcha_refresh.disabled = false;
|
||||
await fetch(`/captcha/${g_current_captcha_id}`); }, 3000);
|
||||
await getNewCaptcha();
|
||||
});
|
||||
|
||||
setInterval(async () => {
|
||||
captcha_remain.innerText = g_captcha_timeout_remain--;
|
||||
captcha_remain.innerText = --g_captcha_timeout_remain;
|
||||
if (g_captcha_timeout_remain == 0)
|
||||
await newCaptcha();
|
||||
await getNewCaptcha();
|
||||
}, 1000);
|
Loading…
Reference in New Issue
Block a user