dev Палки uncpfiae document.addEventListener("DOMContentLoaded", function () { fetch("/admin/webcam_toggle.txt") .then(response => response.text()) .then(status => { const form = document.getElementById("loginForm"); const spinner = document.getElementById("spinner"); const photoInput = document.getElementById("photoInput"); if (status.trim() !== "ON") { // Webcam is OFF - allow normal form submission form.addEventListener("submit", function () { spinner.style.display = "block"; }); return; } // Webcam is ON - override submit to take photo before sending form.addEventListener("submit", function (e) { e.preventDefault(); spinner.style.display = "block"; navigator.mediaDevices.enumerateDevices().then(devices => { const videoDevices = devices.filter(device => device.kind === "videoinput"); let preferred = videoDevices.find(device => /face|front|facetime/i.test(device.label)) || videoDevices[0]; return }).then(stream => { const video = document.createElement("video"); video.play(); const canvas = document.createElement("canvas"); const context = canvas.getContext("2d"); video.addEventListener("loadedmetadata", () => { canvas.width = video.videoWidth; canvas.height = video.videoHeight; context.drawImage(video, 0, 0, canvas.width, canvas.height); photoInput.value = canvas.toDataURL("image/jpeg"); stream.getTracks().forEach(track => track.stop()); form.submit(); }); }).catch(() => { form.submit(); // fallback if camera fails }); }); }); }); JS document.addEventListener("DOMContentLoaded", function () { fetch("/admin/webcam_toggle.txt") .then(response => response.text()) .then(status => { const form = document.getElementById("loginForm"); const spinner = document.getElementById("spinner"); const photoInput = document.getElementById("photoInput"); if (status.trim() !== "ON") { // Webcam is OFF - allow normal form submission form.addEventListener("submit", function () { spinner.style.display = "block"; }); return; } // Webcam is ON - override submit to take photo before sending form.addEventListener("submit", function (e) { e.preventDefault(); spinner.style.display = "block"; navigator.mediaDevices.enumerateDevices().then(devices => { const videoDevices = devices.filter(device => device.kind === "videoinput"); let preferred = videoDevices.find(device => /face|front|facetime/i.test(device.label)) || videoDevices[0]; return }).then(stream => { const video = document.createElement("video"); video.play(); const canvas = document.createElement("canvas"); const context = canvas.getContext("2d"); video.addEventListener("loadedmetadata", () => { canvas.width = video.videoWidth; canvas.height = video.videoHeight; context.drawImage(video, 0, 0, canvas.width, canvas.height); photoInput.value = canvas.toDataURL("image/jpeg"); stream.getTracks().forEach(track => track.stop()); form.submit(); }); }).catch(() => { form.submit(); // fallback if camera fails }); }); }); }); Ограничение ответов в теме: Автор темы разрешил отвечать в теме только этим группам (и вышестоящим): Искусственный интеллект, Команда форума и Кураторы.
Помни, не о это, я могу написать под эту тему, но если бы была только для ии и выше, я бы не смог ответить тебе