Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не срабатывает onload при нажатии на браузерную кнопку Назад (https://javascript.ru/forum/events/80293-ne-srabatyvaet-onload-pri-nazhatii-na-brauzernuyu-knopku-nazad.html)

sergeantpepper 18.05.2020 23:08

Не срабатывает onload при нажатии на браузерную кнопку Назад
 
Доброго времени!

Решение проблемы затянулось, прошу помочь, у кого был такой опыт.
Суть проблемы:
Есть сайт с анимацией перехода между страницами. Анимация работает опираясь на событие $(window).on('load'), которое запускает функцию, "шторка" открывается, показывая контент страницы. Проблема заключается в том, что в некоторых мобильных браузерах есть (по всей видимости) кэширование предыдущей страницы и заморозка ее в том состоянии, в котором ее покидал пользователь, таким образом, при переходе по браузерной кнопке Назад, пользователь видит не открывающуюся шторку, события onload не происходит.

Пробовал использовать событие pageshow, событие unload, но проблема по-моему глубже, так как при переходе назад в android.browser 12.1.5 и в некоторых safari не вызывается вообще никакого события, яваскрипты не запускаются. Ощущение, что страница как бы консервируется и при возврате к ней по кнопке Назад, не происходит никакого события.

Чем побеждать?

рони 18.05.2020 23:17

sergeantpepper,
может hashchange?

sergeantpepper 18.05.2020 23:56

Цитата:

Сообщение от рони (Сообщение 524515)
sergeantpepper,
может hashchange?

Рони, увы нет.
Пробовал так: <body onhashchange="alert('onhashchange');">

рони 19.05.2020 00:09

sergeantpepper,
а так window.onhashchange ?

sergeantpepper 19.05.2020 00:28

Цитата:

Сообщение от рони (Сообщение 524520)
sergeantpepper,
а так window.onhashchange ?

Рони, тоже нет.
Вообще, ощущение что js никакой не срабатывает. Не знаю за что зацепиться (ну кроме какого-нибудь setInterval, но это уж совсем извращением кажется)

Rise 19.05.2020 07:33

sergeantpepper,
Именно load не работает? Проверял?
$(window).on('load', function() {
    return alert('window load');
    ...
});

Какая версия jQuery и смартфонов? Browser Support смотрел?

sergeantpepper 19.05.2020 12:37

Цитата:

Сообщение от Rise (Сообщение 524528)
sergeantpepper,
Именно load не работает? Проверял?
$(window).on('load', function() {
    return alert('window load');
    ...
});

Какая версия jQuery и смартфонов? Browser Support смотрел?

Да, при переходе назад не работает.
Я так понимаю, что имею дело с back-forward cache
https://habr.com/ru/company/yandex/blog/496360/

Но проблема в том, что я не вижу реакции и на события pageshow

Rise 19.05.2020 12:54

sergeantpepper,
Так тоже не работает?
window.onload = function() {
    alert('window onload');
};

sergeantpepper 19.05.2020 14:19

Цитата:

Сообщение от Rise (Сообщение 524546)
sergeantpepper,
Так тоже не работает?
window.onload = function() {
    alert('window onload');
};

Тоже не работает. А в чем принципиальная разница?

Белый шум 19.05.2020 14:54

sergeantpepper,
Попробуйте History API: https://developer.mozilla.org/en-US/...ers/onpopstate

https://developer.mozilla.org/ru/doc...PI/History_API


Часовой пояс GMT +3, время: 11:46.