Отслеживание хода загрузки для пользовательской панели загрузки с помощью beforeunload - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь использовать nprogress с PWA, который я построил, чтобы показать панель загрузки, особенно когда приложение запускается в автономном режиме.

Моя мысль состоит в том, чтобы запустить бар при срабатывании beforeunload и завершить его непосредственно перед тем, как страница действительно выгружается.

Для этого я настроил следующее:

import NProgress from "nprogress";

window.onbeforeunload = () => {
    NProgress.start();
};

window.onunload = () => {
    NProgress.done();
};

Конечно, я пришел к выводу, что onunload срабатывает после того, как содержимое страницы становится скрытым, и, таким образом, мой индикатор выполнения никогда не получает возможности завершиться.

Я пытался измениться так, чтобы при загрузке следующей страницы индикатор выполнения продолжался, но это тоже не совсем правильно.

В случае использования window.onload = () => { NProgress.done(); } индикатор выполнения перезапускается с 0, а не сохраняет процент завершения с предыдущей страницы. Это приводит к странному поведению, описанному ниже:

  1. Пользователь нажимает ссылку
  2. Индикатор выполнения появляется и прогрессирует от 0 до ~ 0,4
  3. Загрузка новой страницы
  4. Появляется индикатор выполнения
  5. Индикатор выполнения мгновенно прогрессирует от 0 до 1

Это означает, что есть странная вспышка без индикатора выполнения, затем индикатор выполнения сброса, прежде чем окончательно завершить его.

Как я могу изменить свои сценарии, чтобы индикатор выполнения завершался непосредственно перед перенаправлением страницы?

...