У меня есть пользовательские всплывающие функции.Мне нужно, чтобы кнопка возврата браузера закрывала это всплывающее окно.
Мой идеальный сценарий - НЕ показывать хэштег в строке URL.
Я пытался вставить window.history.pushState('forward', null, '');
в свойshowPopup()
, а затем выполните следующие действия:
$(window).on('popstate', function () {
closePopup();
});
Это работает, но проблема в том, что когда я закрываю всплывающее окно вручную, мне нужно дважды нажать кнопку «Назад», чтобы вернуться на предыдущую страницу (очевидно, потому чтозапись истории браузера была добавлена при открытии всплывающего окна).
Каков наилучший способ сделать это?Можно ли это сделать без добавления записи истории браузера?По сути, я пытаюсь повторить поведение мобильного приложения.Нажатие кнопки «Назад» в мобильном приложении обычно отменяет любые открытые модальные или контекстные меню.
$('.popup-link').click(function() {
showPopup();
});
$('.popup-close').click(function() {
hidePopup();
});
function showPopup() {
$('.popup').addClass('active');
}
function hidePopup() {
$('.popup').removeClass('active');
}
.popup {
background-color: #ccc;
width: 300px;
height: 300px;
display: none;
}
.popup.active {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="popup-link">Click</button>
<div class="popup">
<button class="popup-close">x</button>
<!-- popup content here -->
</div>