#
Быстрый старт — Web
Документ описывает минимальную интеграцию SDK на сайт.
#
1. Подключение
Подключите один тег <script> в <head> или перед закрывающим </body>:
<script async src="https://mads-media.magnit.ru/web-sdk/current/wrapper.js"></script>
Файл main.js подгружается автоматически из той же директории, что и wrapper.js — отдельно подключать его не нужно.
После загрузки на window появляется функция MadsPlayer(config).
#
2. Минимальный пример (Default mode)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>MADS Player</title>
</head>
<body>
<div id="ad-container"></div>
<script async src="https://mads-media.magnit.ru/web-sdk/current/wrapper.js"></script>
<script>
window.MadsPlayer({
container: '#ad-container',
padId: 193,
onReady: () => console.log('Плеер готов'),
onError: () => console.warn('Ошибка SDK'),
});
</script>
</body>
</html>
В режиме default плеер сам стартует при попадании в зону видимости (≥50%) и фокусе вкладки. Никаких дополнительных вызовов не требуется.
Важно:
padIdобязателен. Если вы передаёте параметр?pad_id=...в URL страницы — он перекроет значение из конфига (удобно для тестирования).
#
3. Конфигурация
window.MadsPlayer(config: UserConfig)
Плюс любые из колбэков ниже.
#
4. Колбэки
Все колбэки опциональны. Колбэки жизненного цикла вызываются без аргументов; onError получает объект с деталями ошибки.
onError срабатывает только для критических ошибок (после которых плеер уничтожается). Объект:
{
message: string; // Человеко-читаемое сообщение
code: 'UNKNOWN' | 'NETWORK_ERROR' | 'CONFIG_ERROR'
| 'NO_ADS' | 'RENDER_ERROR' | 'TIMEOUT' | 'INIT';
severity: 'critical' | 'warning' | 'info';
}
window.MadsPlayer({
container: '#ad-container',
padId: 193,
onReady: () => console.log('ready'),
onPlayed: () => console.log('played'),
onPaused: () => console.log('paused'),
onResumed: () => console.log('resumed'),
onCompleted: () => console.log('completed'),
onSkipped: () => console.log('skipped'),
onClicked: () => console.log('clicked'),
onStopped: () => console.log('stopped'),
onError: (e) => console.log('error', e.code, e.message),
});
#
5. Уничтожение плеера
MadsPlayer(...) возвращает объект с методом destroy():
const player = window.MadsPlayer({
container: '#ad-container',
padId: 193,
});
// Когда плеер больше не нужен
await player.destroy();
destroy() возвращает Promise, который резолвится после fade-out анимации (~300 мс) и удаления DOM-узлов. Чтобы убрать плеер мгновенно, передайте в конфиг disableAnimations: true.
#
6. SDK mode — программное управление
Если вам нужны собственные кнопки play/pause/skip или плеер должен оставаться скрытым до явного запуска, используйте mode: 'sdk'.
В этом режиме:
- Контейнер плеера создаётся, но скрыт (
display: none) до первого вызоваplay(). - Возвращаемый объект содержит методы управления воспроизведением.
- Команды можно вызывать сразу — они буферизуются до готовности iframe и выполняются автоматически. Дожидаться
onReadyне обязательно.
#
Возвращаемые методы
#
Полный пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>MADS Player — SDK mode</title>
</head>
<body>
<div class="controls">
<button id="btn-play">Play</button>
<button id="btn-pause">Pause</button>
<button id="btn-resume">Resume</button>
<button id="btn-stop">Stop</button>
<button id="btn-skip">Skip</button>
<button id="btn-mute">Mute</button>
<button id="btn-destroy">Destroy</button>
</div>
<div id="ad-container"></div>
<script async src="https://mads-media.magnit.ru/web-sdk/current/wrapper.js"></script>
<script>
// Дождитесь загрузки wrapper.js — например, через 'load' или DOMContentLoaded
window.addEventListener('load', () => {
const player = window.MadsPlayer({
mode: 'sdk',
container: '#ad-container',
padId: 193,
onReady: () => console.log('ready'),
onCompleted: () => console.log('completed'),
onError: () => console.log('error'),
});
document.getElementById('btn-play').onclick = () => player.play();
document.getElementById('btn-pause').onclick = () => player.pause();
document.getElementById('btn-resume').onclick = () => player.resume();
document.getElementById('btn-stop').onclick = () => player.stop();
document.getElementById('btn-skip').onclick = () => player.skip();
document.getElementById('btn-mute').onclick = () => player.mute();
document.getElementById('btn-destroy').onclick = () => player.destroy();
});
</script>
</body>
</html>
#
7. FAQ / Troubleshooting
Плеер не появляется на странице.
Убедитесь, что элемент container существует в DOM на момент вызова MadsPlayer(...). SDK сам дожидается DOMContentLoaded, но селектор должен резолвиться — иначе инициализация молча прерывается.
Не приходят креативы / onError срабатывает сразу.
Проверьте корректность padId и доступность ad-сервера. Если вы используете нестандартный endpoint — передайте его в customUrl.
Хочу временно подменить ответ ad-сервера в тестах.
Передайте готовый объект в virtualVisit — SDK не пойдёт за креативами в сеть.
Как протестировать с другим padId без редеплоя.
Откройте страницу с query-параметром ?pad_id=42 — он имеет приоритет над значением из конфига.
Нужно убрать плеер без анимации.
Передайте disableAnimations: true в конфиг, тогда destroy() удалит DOM мгновенно.