Задать вопрос
@barankaescape

Не устанавливается слушатель события при инициализации главного компонента Vue js. Почему так происходит?

Я пытаюсь сделать приложение для telegram на vue js и сталкиваюсь с проблемой при использовании события beforeunload.

Когда я добавляю обработчик beforeunload в методе onMounted, он не срабатывает при первом запуске приложения. Однако после перезагрузки страницы событие начинает работать корректно.

const sendLogoutRequest = () => {
  fetch("http://localhost:3000/lastauth", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      userId: userStore.user.userId,
      authToken: userStore.authToken,
    }),
  }).catch((err) => {
    console.error("Ошибка при отправке запроса:", err);
  });
};

onMounted(async () => {
...
window.addEventListener("beforeunload",  sendLogoutRequest);
})

onBeforeUnmount(() => {
window.removeEventListener("beforeunload", sendLogoutRequest);
})


API телеграма не предоставляет никаких подобных методов и ивентов. В чем может быть причина? В асинхронности монтирования главного компонента?
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Средний 10 комментариев
Пригласить эксперта
Ответы на вопрос 1
@barankaescape Автор вопроса
Значит ответ до боли прост. Если запускаете приложение в дев моде, то в телеграмовском браузере надо 10 раз дождаться, пока оно отлагает. То ли дело в ngrok, то ли в самом телеграмовском браузере(скорее второе, потому что в хроме все работает великолепно).

В итоге обработчик добавил в onMounted замыкающим звеном, после всех других функций. ВАЖНО!!! обязательно ставить после метода webapp.ready(), который просят вызывать как можно раньше (хотя в документации к сдк говорят вызывать его как можно раньше с поправкой на полную инициализацию приложения).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы