Для пояснения: Я не пытаюсь провести различие между обновлением и перезагрузкой, поэтому это не дубликат обновление против перезагрузки . Я пытаюсь выяснить, есть ли способ определить, когда пользователь запускает hard reload вместо обычной перезагрузки. Я спрашиваю, потому что я хочу выполнить некоторый код до hard только перезагрузки.
Используя JavaScript, с помощью кнопки перезагрузки браузера или с помощью ярлыка, например Shift + Ctrl + R , можно выполнить hard перезагрузка вкладки браузера. Можно ли обнаружить такую сложную перезагрузку с помощью JavaScript, и если да, то как?
Я знаю, что можно обнаружить, когда нормальное событие перезагрузки инициируется с событием onbeforeunload
, и я могу определить тип навигации, чтобы различать обновление и перезагрузку, но я не могу обнаружить принудительную перезагрузку.
Пока что я использую следующий код JS для обнаружения перезагрузки:
window.addEventListener('beforeunload', function (e) {
// Cancel the event
e.preventDefault();
// Chrome requires returnValue to be set
e.returnValue = '';
// For older browsers
console.log('Is reloading?', event.currentTarget.performance.navigation.type === 1);
// For modern browsers
const perfEntries = performance.getEntriesByType("navigation");
for (let i = 0; i < perfEntries.length; i++) {
console.log('Is reloading? ', perfEntries[i].type === 1);
}
});
Я бы хотел различать обычную перезагрузку, например, location.reload()
, и принудительную перезагрузку, например, location.reload(true)
.