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

Solmyr
На сайте с 10.09.2007
Offline
501
1092

Хочу чтобы при нажатии кнопки "Назад", вместо действия броузеру закрывалось открытое попап-окно.

В десктопах сделал так: при открытии окна к урлу добавляется #window при нажатии кнопки "назад", происходит эвент onhashchange который соответственно обрабатывается.

Проблема в том, что в мобильных браузерах, например дефолтном андроид-браузере нет эвента onhashchange. Как быть?

D.iK.iJ
На сайте с 26.05.2013
Offline
236
#1

Можно же джаваскриптом по таймеру проверять наличие #window в URL и открывать / закрывать окно.

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
Solmyr
На сайте с 10.09.2007
Offline
501
#2

Во-первых не будет никакого джаваскрипта, потому что после нажатия кнопки "назад" произойдет перезагрузка страницы. Соответственно откроется страница на которой этого джаваскрипта нет.

Во-вторых мобильные броузеры тормозят сильно. Нельзя в них ничего на таймер вешать. Кстати обнаружил проблему, что при изменении ориентации устройства не всегда срабатывает евент onresize именно из-за торможения броузера. Не знаю вот что с этим тоже делать.

Ayavryk
На сайте с 11.10.2003
Offline
209
#3
Solmyr:
onhashchange

Настолько тухло?

М.б. попробовать отлавливать window.onunload? Если переход происходит при клике по ссылке - разрешать, а если по возврату то выдавать попап.

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
D.iK.iJ
На сайте с 26.05.2013
Offline
236
#4
Solmyr:
Во-первых не будет никакого джаваскрипта, потому что после нажатия кнопки "назад" произойдет перезагрузка страницы. Соответственно откроется страница на которой этого джаваскрипта нет.

Если сделать ссылку с <a href="#window">, нажать на нее и вернуться назад, разве страница перезагрузится?

Кроме посоветованного выше знаю только onbeforeunload = function(){return 'Не уходи, я все прАсчу!';}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий