Всплывающее окно при закрытии страницы

18 февраля 2020 CSS HTML JavaScript jQuery
Стоп-форма — это всплывающее окно, призывающее к действию, которое открывается через определенное время нахождения пользователя на странице или когда он пытается покинуть её. Чаще всего стоп-формы используются на Landing page.
Стоп-форма по таймеру
Рассмотрим пример вплывающего окна с формой на Bootsrap, которое вызывается если пользователь находится на странице более 10 сек:
<html>
<body>
<head>
<!-- Подключаем Bootstrap -->
<link rel='stylesheet' id='mts_bootstrap-css' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css?ver=1.0' type='text/css' media='all' />
</head>
<div id="stop-modal" class="modal fade show">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Стоп-форма</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="https://maindot.ru/" method="POST">
<div class="form-content">
<div class="form-row">
<div class="col-md-12">
<div class="form-group">
<input type="text" name="name" class="form-control" title="" value="" placeholder="Ваше имя" />
</div>
<div class="form-group">
<input type="tel" name="phone" class="form-control" title="" value="" placeholder="Ваше телефон" />
</div>
<div class="form-group">
<input type="text" name="email" class="form-control" title="" value="" placeholder="Ваше E-mail" />
</div>
</div>
<div class="col-md-12">
<input type="submit" class="btn btn-primary" value="Отправить">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Подключаем jQuery -->
<script type='text/javascript' src='http://code.jquery.com/jquery-3.3.1.min.js?ver=1.0'></script>
<!-- Подключаем js-файл Bootstrap -->
<script type='text/javascript' src='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js?ver=1.0'></script>
<!-- Функция Стоп-формы -->
<script>
function stopModal(){
$("#stop-modal").modal('show');
}
setTimeout(stopModal, 10000); // время в мс
</script>
</body>
</html>За вызов формы отвечает вот эта небольшая JavaScript функция:
function stopModal(){
$("#stop-modal").modal('show');
}
setTimeout(stopModal, 10000); // время в мсСтоп-форма при закрытии страницы
Заменим функцию таймера на следующий код:
// Вызываем окно если курсор мыши вышел за границы страницы
$(document).mouseleave(function(e){
if (e.clientY < 0) {
$("#stop-modal").modal('show');
}
});
// Если стоп-форму закрыли, то удаляем её, чтобы она больше не срабатывала
$('#stop-modal').on('hidden.bs.modal', function () {
$("#stop-modal").remove();
});Суть работы заключается в том, что если курсор мыши вышел за пределы границ сайта, а обычно это происходит тогда, когда пользователь хочет закрыть вкладку или перейти на другую, то вызывается всплывающее окно. Следующая функция удаляет стоп-форму, если она уже была открыта, чтобы окно не открывалось больше одного раза.
Здесь есть программа для автоматизации магазина
Полный код:
<html>
<body>
<head>
<!-- Подключаем Bootstrap -->
<link rel='stylesheet' id='mts_bootstrap-css' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css?ver=1.0' type='text/css' media='all' />
</head>
<div id="stop-modal" class="modal fade show">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Стоп-форма</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form action="https://maindot.ru/" method="POST">
<div class="form-content">
<div class="form-row">
<div class="col-md-12">
<div class="form-group">
<input type="text" name="name" class="form-control" title="" value="" placeholder="Ваше имя" />
</div>
<div class="form-group">
<input type="tel" name="phone" class="form-control" title="" value="" placeholder="Ваше телефон" />
</div>
<div class="form-group">
<input type="text" name="email" class="form-control" title="" value="" placeholder="Ваше E-mail" />
</div>
</div>
<div class="col-md-12">
<input type="submit" class="btn btn-primary" value="Отправить">
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Подключаем jQuery -->
<script type='text/javascript' src='http://code.jquery.com/jquery-3.3.1.min.js?ver=1.0'></script>
<!-- Подключаем js-файл Bootstrap -->
<script type='text/javascript' src='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js?ver=1.0'></script>
<!-- Функция Стоп-формы -->
<script>
// Вызываем окно если курсор мыши вышел за границы страницы
$(document).mouseleave(function(e){
if (e.clientY < 0) {
$("#stop-modal").modal('show');
}
});
// Если стоп-форму закрыли, то удаляем её, чтобы она больше не срабатывала
$('#stop-modal').on('hidden.bs.modal', function (e) {
$("#stop-modal").remove();
});
</script>
</body>
</html>
Добавить комментарий