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

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

18 февраля 2020 CSS HTML JavaScript

Стоп-форма — это всплывающее окно, призывающее к действию, которое открывается через определенное время нахождения пользователя на странице или когда он пытается покинуть её. Чаще всего стоп-формы используются на 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="/" 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="/" 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>
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Похожие записи
Автоопределение города по IP на сайте

Необходимость определить город посетителя на сайте актуально для интернет-магазинов или сайтов работающих в разных регионах. Это даст возможность показывать разные контакты, и изменять текст на страницах в зависимости от текущего местоположения пользователя. Самый простой и эффективный способ - это определить Читать далее

Подключение jQuery

jQuery - это быстрая, небольшая и многофункциональная библиотека JavaScript, включенная в один файл .js. На данный момент это самая популярная библиотека JavaScript. JQuery облегчает жизнь веб-разработчика. Библиотека предоставляет множество встроенных функций, с помощью которых вы можете легко и быстро выполнять Читать далее

Живой поиск jQuery

Сегодня я расскажу об одном отличном jQuery плагине о котором вы могли не знать. С его помощью можно быстро сделать живой поиск на странице сайта с множеством элементов. Называется он HideSeek. Плагин очень прост в использовании, но в то же Читать далее

Сохранение данных в форме после обновления страницы

Часто ли у вас случалось такое, что при заполнении формы на сайте истекал срок действия сеанса или например зависал браузер, после чего приходилось заполнять форму заново?! HTML5 представил концепцию механизмов хранения заполняемых данных в браузере. В хранилище HTML5 есть возможность Читать далее

Кастомный виджет переводчик для сайта с флагами

Сегодня мы кастомизируем стандартный виджет Google переводчика для сайта и сделаем его в виде меню с флагами. На данный момент сервис Google Translate Widget больше не поддерживается, но это никак не отразится на сайтах, которые были подключены ранее. Наш кастомный Читать далее

AJAX в 1C-Битрикс

В компонентах Битрикс есть встроенный функционал для AJAX подгрузки. Его так же можно использовать, например для бесконечного скролла новостей. Но есть и более простой способ, с помощью которого можно загружать ответ любого компонента без перезагрузки страницы. Его мы и рассмотрим Читать далее

Отправка письма с вложениями на PHP и AJAX

Мы уже рассматривали, как сделать форму обратной связи на PHP и Ajax. Сегодня мы модернизируем её и научим отправлять приложенные файлы. HTML-код формы Добавляем в форму ещё одно поле файл: <form id="feedback-form" action=""> <input type="text" name="name" required placeholder="Ваше имя"> <input Читать далее

Добавить комментарий

*

code