/
Coderdev
/
web-static-labs
Обзор
Документация
Войти
/
Coderdev
/
web-static-labs
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
html/lab5/task6/script.js
84 строки
3 KB
Coderdev
1
12 май 2026, 12:37
12 май 2026, 12:37
d8ecd0f
Код
Авторство
О чём код?
document.addEventListener('DOMContentLoaded', () => { const lengthInput = document.getElementById('length'); const digitsCb = document.getElementById('digits'); const upperCb = document.getElementById('upper'); const lowerCb = document.getElementById('lower'); const symbolsCb = document.getElementById('symbols'); const generateBtn = document.getElementById('generateBtn'); const resultContainer = document.getElementById('resultContainer'); const passwordDisplay = document.getElementById('passwordDisplay'); const copyBtn = document.getElementById('copyBtn'); const charSets = { digits: '0123456789', upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', lower: 'abcdefghijklmnopqrstuvwxyz', symbols: '!@#$%^&*()_+~`|}{[]:;?><,./-=' }; const copyToClipboard = (text) => { if (navigator.clipboard && window.isSecureContext) { navigator.clipboard.writeText(text).then(() => { alert("Пароль скопирован!"); }).catch(err => { fallbackCopy(text); }); } else { fallbackCopy(text); } }; const fallbackCopy = (text) => { const textArea = document.createElement("textarea"); textArea.value = text; textArea.style.position = "fixed"; textArea.style.left = "-9999px"; textArea.style.top = "0"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { document.execCommand('copy'); alert("Пароль скопирован (fallback)!"); } catch (err) { alert("Не удалось скопировать"); } document.body.removeChild(textArea); }; // --------------------------------------- generateBtn.addEventListener('click', () => { const length = parseInt(lengthInput.value); if (isNaN(length) || length < 6 || length > 32) { alert('Пожалуйста, введите число от 6 до 32'); return; } let availableChars = ''; if (digitsCb.checked) availableChars += charSets.digits; if (upperCb.checked) availableChars += charSets.upper; if (lowerCb.checked) availableChars += charSets.lower; if (symbolsCb.checked) availableChars += charSets.symbols; if (availableChars === '') { alert('Выберите хотя бы один тип символов!'); return; } let generatedPassword = ''; for (let i = 0; i < length; i++) { const randomIndex = Math.floor(Math.random() * availableChars.length); generatedPassword += availableChars[randomIndex]; } passwordDisplay.textContent = generatedPassword; resultContainer.style.display = 'block'; }); copyBtn.addEventListener('click', () => { const password = passwordDisplay.textContent; copyToClipboard(password); }); });