У меня есть веб-приложение, которое использует сервис-воркер, который определяет, когда сеть находится в автономном режиме, и обслуживает кешированную автономную страницу.
У меня есть случай, когда:
- программа запускается, пока сеть подключена, и загружает url https://localhost/my_site
- пользователь нажимает кнопку, которая запускает вызов выборки
- в это время сеть отключается,
- работник службы обнаруживает это состояние и возвращает кэшированную офлайн-страницу
- код javascript проверяет тип содержимого ответа, обнаруживает, что это текст / html (вместо исходного ответа, который должен был быть, например, application / json)
- код javascript отображает автономная страница (установив "window.location.href = response.url"). Автономный URL-адрес https://localhost/static/offline/offline.html
- на этом этапе в адресной строке сайтов отображается автономный URL-адрес.
Я ожидаю, что тогда пользователь refre sh страницу (например, нажав F5), чтобы перезагрузить исходное содержимое после повторного подключения к сети. Но поскольку в адресной строке теперь отображается автономный URL-адрес, обновление страницы просто перезагружает автономную страницу снова и снова.
Как пользователь может вернуться к исходному URL: https://localhost/my_site?
Спасибо, Avner
EDIT:
Почему бы просто не обслуживать офлайн-страницу от сервис-воркера как localhost / my_site
Это может происходить из-за различных страниц. Как бы вы программно изменили response.url? Я пробовал использовать решение на основе , здесь . Когда выборка возвращается, я проверяю тип ответа. Если это текст / html, я загружаю новую страницу из ответа, а затем использую:
window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", queryUrl1);
, чтобы установить URL-адрес, но он изменяет только URL-адрес в истории, а не в представленном в данный момент URL ...