Я хочу проверить, когда кто-то пытается обновить страницу.
Например, когда я открываю страницу, ничего не происходит, но когда я обновляю страницу, она должна отображать предупреждение.
javascript
page-refresh
Ahmed
источник
источник
window.performance.navigation.type
устарела, пожалуйста , смотрите мой ответ .Ответы:
Dep
window.performance.navigation.type
устарела, пожалуйста, смотрите ответ Илья ЗеленькоЛучший способ узнать, что страница действительно перезагружена, - это использовать объект навигатора, который поддерживается большинством современных браузеров.
Он использует API синхронизации навигации .
источник: https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API
источник
performance.navigation.type == performance.navigation.TYPE_RELOAD
легче читать вместо== 1
. Кроме того, если вы проверите,performance.navigation
вы обнаружите, что есть 4 различных типа навигации, какTYPE_BACK_FORWARD
,TYPE_NAVIGATE
window.performance.navigation.type
устарела, пожалуйста , смотрите мой ответ .Первый шаг - проверить
sessionStorage
наличие заранее определенного значения и, если оно существует, предупреждение пользователя:Второй шаг - установить
sessionStorage
какое-то значение (напримерtrue
):Значения сессии сохраняются до тех пор, пока страница не будет закрыта, поэтому она будет работать только в том случае, если страница перезагрузится в новой вкладке с сайтом. Вы также можете сохранить счет перезагрузки таким же образом.
источник
true
преобразуется в"true"
. 2). Хранение сеанса сохраняется до тех пор, пока пользователь не закроет окно браузера, поэтому вы не сможете определить разницу между перезагрузкой страницы и переходом с сайта на ваш сайт и обратно на него в одном сеансе браузера.Новый стандарт с 2018 года (PerformanceNavigationTiming)
window.performance.navigation
свойство устарело в спецификации Navigation Timing Level 2 . Пожалуйста, используйтеPerformanceNavigationTiming
интерфейс вместо.PerformanceNavigationTiming.type
Это экспериментальная технология .
Перед использованием в производстве внимательно проверьте таблицу совместимости браузера .
Поддержка на 2019-07-08
Свойство type только для чтения возвращает строку, представляющую тип навигации. Значение должно быть одним из следующих:
навигация - навигация запускается нажатием ссылки, вводом URL-адреса в адресной строке браузера, отправкой формы или инициализацией с помощью операции сценария, отличной от reload и back_forward, как указано ниже.
перезагрузка - навигация осуществляется с помощью операции перезагрузки браузера или
location.reload()
.back_forward - навигация осуществляется через операцию просмотра истории браузера.
prerender - навигация инициируется подсказкой prerender .
Это свойство только для чтения.
Следующий пример иллюстрирует использование этого свойства.
источник
Сохраните файл cookie при первом посещении страницы. При обновлении проверьте, существует ли ваш файл cookie, и если это так, предупредите.
и в вашем теле тег:
источник
если
возвращается
0 => пользователь только что набрал URL
1 => страница перезагрузилась
2 => нажата кнопка назад.
источник
performance.navigation.type
устарела, пожалуйста, смотрите мой ответ .Я нашел некоторую информацию здесь Обновление страницы обнаружения Javascript . Его первая рекомендация - использовать скрытые поля, которые обычно сохраняются при обновлении страницы.
источник
Referer
свойство и изменив ответ сервера на основе этого свойства<script>
элемента в нижнюю часть будет работать, но это все еще не гарантированное решение (равно как и метод cookie).Referer
тоже не надежна; многие прокси и расширения браузера лишают его запросов.Я написал эту функцию, чтобы проверить оба метода, используя старый
window.performance.navigation
и новыйperformance.getEntriesByType("navigation")
одновременно:Описание результата:
0: щелчок по ссылке, ввод URL-адреса в адресной строке браузера, отправка формы, щелчок по закладке, инициализация с помощью операции сценария.
1: Нажатие на кнопку «Перезагрузить» или использование
Location.reload()
2: Работа с историей браузера (Бакк и Форвард).
3: активность перед рендерингом, как
<link rel="prerender" href="https://example.com/next-page.html">
4: любой другой метод.
источник
Я нашел некоторую информацию здесь Обновление страницы обнаружения Javascript
источник
источник