Подключите скрипт
Один тег, который можно поставить в любом месте страницы. Без зависимостей.
Легко интегрируйте Passly на ваш сайт
Достаточно трёх строк, чтобы разместить генератор на вашем сайте.
Один тег, который можно поставить в любом месте страницы. Без зависимостей.
Элемент div с классом passly-widget там, где должен появиться генератор.
Виджет инициализируется сам, в том числе для элементов, добавленных позже.
<!-- Passly Widget --> <script src="https://passly.fr/widget.js" ></script> <div class="passly-widget" data-length="16" data-format="random" data-lang="ru"></div>
Простой виджет с настройками по умолчанию
<div class="passly-widget"></div>
Генерирует пароль из 24 символов со всеми типами символов
<div class="passly-widget" data-length="24" data-special="true" data-exclude-similar="true"></div>
Автоматически заполняет поле формы
<input type="text" id="my-password-field"> <div class="passly-widget" data-target="#my-password-field" data-length="20"></div>
Генерирует лёгкую для запоминания парольную фразу
<div class="passly-widget" data-format="passphrase"></div>
| Атрибут | Тип | По умолчанию | Описание |
|---|---|---|---|
data-format | string | random | random, pronounceable или passphrase |
data-length | integer | 16 | Длина пароля (4–128) |
data-words | integer | 4 | Парольные фразы: количество слов (3–10) |
data-separator | string | - | Парольные фразы: разделитель между словами |
data-auto-generate | boolean | true | Генерировать пароль сразу при загрузке |
| Атрибут | Тип | По умолчанию | Описание |
|---|---|---|---|
data-lowercase | boolean | true | Строчные буквы (a-z) |
data-uppercase | boolean | true | Заглавные буквы (A-Z) |
data-digits | boolean | true | Цифры (0-9) |
data-special | boolean | false | Специальные символы (!@#$...) |
data-exclude-similar | boolean | false | Исключить похожие символы (il1Lo0O) |
| Атрибут | Тип | По умолчанию | Описание |
|---|---|---|---|
data-target | string | — | CSS-селектор поля для автоматического заполнения |
data-lang | string | fr | Язык виджета (fr, en, es, de, it, pt, nl, ru, ja, zh) |
data-class | string | — | Дополнительные CSS-классы (темы, варианты) |
data-api | string | источник скрипта | Переопределяет URL API — указывается на теге <script> |
Выберите тему, чтобы увидеть предпросмотр и получить её таблицу стилей.
.passly-widget-wrapper.blue-theme { --passly-primary: #2563EB; --passly-primary-hover: #1D4ED8; --passly-primary-light: #3B82F6; --passly-bg: #111827; --passly-bg-card: #1F2937; --passly-text: #F3F4F6; --passly-text-light: #9CA3AF; --passly-border: #374151; background: linear-gradient(135deg, var(--passly-bg), var(--passly-bg-card)) !important; border: 1px solid var(--passly-primary) !important; } .passly-widget-wrapper.blue-theme .passly-generate-btn { background: linear-gradient(135deg, var(--passly-primary), var(--passly-primary-hover)) !important; }
Полностью настройте внешний вид виджета с помощью доступных CSS-переменных и классов:
Надпись «Разработано Passly» нельзя скрыть: она восстанавливается автоматически. Однако вы можете свободно её оформлять.
Создайте собственную тему в реальном времени:
.passly-widget-wrapper.custom-theme { --passly-primary: #DC2626; --passly-primary-hover: #c81212; --passly-primary-light: #f03a3a; --passly-bg: #1A1A1A; --passly-text: #E8E8E8; --passly-border: #2A2A2A; --passly-radius: 10px; --passly-font-size: 15px; }
// Le widget s'initialise seul ; il suffit d'écouter ses événements.
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.passly-widget').forEach((widget) => {
widget.addEventListener('passly:generated', (event) => {
console.log('Mot de passe généré :', event.detail.password);
console.log('Entropie :', event.detail.entropyBits, 'bits');
});
});
});
// Création dynamique
function createWidget(container) {
const widget = document.createElement('div');
widget.className = 'passly-widget';
widget.dataset.length = '20';
widget.dataset.special = 'true';
container.appendChild(widget);
// Facultatif : l'observateur interne détecte déjà les nouveaux nœuds.
window.PasslyWidget?.init(container);
}