Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JavaScript не работает в PWA (https://javascript.ru/forum/misc/84306-javascript-ne-rabotaet-v-pwa.html)

arkadii_parovozov 02.08.2022 18:35

JavaScript не работает в PWA
 
Приветствую всех!

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

Подскажите как вылечить эту болячку? Как заставить js работать в фоновом режиме в PWA странице?

рони 02.08.2022 18:48

arkadii_parovozov,
не использовать setInterval, забыть что этот метод есть в js.
как заменить, читать по ссылке ниже.

Вложенный setTimeout

arkadii_parovozov 02.08.2022 19:00

рони,
так я setTimeout и использую :cray:

arkadii_parovozov 02.08.2022 20:00

рони,
я выявил что при свернутом браузере (даже если просто перейти на другую вкладку), то не срабатывает это условие:
if (navigator.geolocation)

соответственно не может найти координаты:
navigator.geolocation.getCurrentPosition(function(position) {
  var latitude = position.coords.latitude;
  var longitude = position.coords.longitude;


Подскажите, можно как-то решить эту проблему? Можно ли получить координаты если вкладка не активна (в фоне)?

voraa 02.08.2022 23:04

Никак, скорее всего.
Так определено в спецификации geolocation
https://w3c.github.io/geolocation-ap...est-a-position
Обратите внимание на зеленое примечание

Цитата:

ПРИМЕЧАНИЕ . Обновления позиций предназначены исключительно для полностью активных видимых документов.
Желаемый эффект здесь заключается в том, что обновления позиций доставляются исключительно к полностью активным документам, которые видны; В противном случае обновления молча «падают на пол». Только когда документ снова становится полностью активным и видимым (например, iframeповторно прикрепляется к родительскому документу), обновления позиции снова начинают доставляться.
Это продиктовано соображениями конфидециальности и безопасности. Кто-нибудь может открыть человеку невидимую вкладку, человек про нее ничего не знает, а она спокойно передает его координаты.

arkadii_parovozov 03.08.2022 08:31

Вот засада (( А через Service Worker тоже не получиться?
Цитата:

Сообщение от voraa (Сообщение 547069)
Это продиктовано соображениями конфидециальности и безопасности. Кто-нибудь может открыть человеку невидимую вкладку, человек про нее ничего не знает, а она спокойно передает его координаты.

Так браузер ведь спрашивает разрешения для отслеживания у пользователя. Если я дал согласие то пускай следит пока я не отзову разрешение. Вот нелюди!


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