@del993788

Как сделать, чтобы при клике на кнопку «назад» с андройда юзер не вылетел с сайта?

Здравствуйте. В андройде есть вот такой бар:
db5f68b640ef40da949c8a95e5bf9384.PNG
А у меня есть вот такая самописная "галерея": https://jsfiddle.net/n91jq25b/2/ . Жмёшь на большую — она становится еще больше, жмёшь на превью — она становится на место большой. Чтоб закрыть — нужно кликнуть по экрану.
Косяк в том, что, когда юзер откроет изображение на весь экран с андройда, он может для его закрытия вместо повторного клика по изображению, кликнуть по кнопке назад, которая есть у него на устройстве, на его баре. После этого нажатия юзер вылетит с моего сайта, что мне не нужно. Как сделать так, чтобы юзер не вылетел после нажатия на кнопку "назад", а просто закрыл изображение?
  • Вопрос задан
  • 510 просмотров
Решения вопроса 1
@del993788 Автор вопроса
Решил проблему костылём: https://jsfiddle.net/n91jq25b/15/

var jactive = 0; // создаём переменную

addEventListener("popstate",function(e){
if (jactive == 1) { 
$('.fullimg').fadeOut(); // если переменная = 1, то выполняем какой-то код
$('.fullimgbox').empty()
jactive = 0;
} else {
jactive = 1;  // иначе, делаем переменную = 1.
}
},false);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Попробуйте работать с History API. Когда открывается галерея меняйте URL страницы, а когда пользователь "вернется" назад отлавливайте это и закрывайте галерею.
Ответ написан
Therapyx
@Therapyx
Data Science
Как возможное решение, работайте со стейтами.
У вас должен быть листнер, который исполняет код при открытии картинки. Меняйте состояние на что-то подобное "pictureOpened" и при закрытие всеми возможными путями меняйте это состояние на "pictureClosed". Соотвественно так же с листнером, который обрабатывает кнопку "назад". Вроде бы это onKeyDown или onBackPressed. Дак вот в этом листнере "если статус = puctureOpened" - вызвать функцию аналогичную с кликом на картинку, которая ее закрывает, иначе {do defaulf}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы