Shakurow
@Shakurow
web разработчик

Как закрыть модальное окно bootstrap при нажатии на кнопку назад в браузере?

На сайте 2test.shakurow.ru есть раздел "природные камни" так вот там при клике на подробности и цены открывается модальное окошко, но после открытия если нажать кнопку назад(браузерная кнопка назад) то мы перейдем на предыдущий сайт, в общем суть такая чтобы модальное окошко закрылось как если бы мы нажали на кнопку Esc

Помогите пожалуйста) Может кто уже решал такие вопросы?
  • Вопрос задан
  • 1754 просмотра
Решения вопроса 1
Shakurow
@Shakurow Автор вопроса
web разработчик
Решение

Вот как я решил свой вопрос:

$('.modal').on('shown.bs.modal', function (e) {
  window.location.href = '#' + $(this).attr('data-m');
});

$('.modal').on('hidden.bs.modal', function (e) {
  history.pushState('', document.title, window.location.pathname);
});

$(window).bind('hashchange', function() {
  if(window.location.hash == ''){
    $('.modal').modal('hide');
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
iiiBird
@iiiBird Куратор тега Bootstrap
Пока ты спишь - твой конкурент совершенствуется
как вариант при открытии пустить на якорь. типа #test
тогда при нажатии назад будет уходить обратно на главную
Ответ написан
Комментировать
@edvardpotter
$('.modal').on('hidden.bs.modal', function (e) {
  history.pushState('', document.title, window.location.pathname);
  console.log($(this).attr('data-m'));
});

$(window).bind('hashchange', function() {
	if(window.location.hash == ''){//Если после # ничего нет, значит закрываем модальное окно(попробуйте открыть модальное окно и в адресной строке удалить все после # после чего у вас закроется модальное окно)
		$('.modal').modal('hide');
	}
});

Взял с вашего примера.
history.pushState - позволяет добавить новую запись в сессию истории текущего окна (вкладки). Добавление записи (элемента) осуществляется в конец сессии истории.

Т.е. вы просто добавляете страницу якобы предыдущую и там уже обрабатываете нужное вам действие.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы