Всплывающее окно при закрытии страницы
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="/" 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>
Добавить комментарий