Как определить ручную или программную перезагрузку страницы в JavaScript без использования sessionStorage, localStorage Html

Программисты Html
Ответить
Anonymous
 Как определить ручную или программную перезагрузку страницы в JavaScript без использования sessionStorage, localStorage

Сообщение Anonymous »

Я пытаюсь создать функцию, в которой я показываю приглашение пользовательского интерфейса, если пользователь перезагружает страницу вручную (с помощью F5, Ctrl+R или кнопки обновления браузера), но я хочу пропустить это приглашение, если перезагрузка была вызвана location.reload() в моем собственном коде JavaScript.
🚫 Ограничения
Я не могу использовать:
  • sessionStorage
  • localStorage
  • Cookies
  • URL query parameters
  • Global JavaScript flags
The reason is that the project is a large Ruby on Rails application, and injecting state (e.g., sessionStorage.setItem(...)) перед каждой программной перезагрузкой невозможно или невозможно поддерживать.
Что я пробовал
✔ Что я пробовал
В настоящее время я использую API синхронизации навигации для обнаружения перезагрузок:
const navEntry = performance.getEntriesByType('navigation')[0];
const navType = navEntry?.type;

if (navType === 'reload') {
// Show prompt
}

This correctly detects that a reload occurred, but it doesn't tell me how it was triggered.

❓ What I need

I want to detect:

✅ Manual reloads → Show prompt

❌ Programmatic reloads via location.reload() → Do not show prompt

🧠 My Question

Is there any way in JavaScript to:

Detect how a page reload was triggered (manual vs programmatic)?

Do so without relying on external state like sessionStorage, cookies, or query parameters?

Are there any browser APIs, events, or reliable patterns/hacks that developers use for this?

I understand this might not be natively supported, so I'm open to clever workarounds

Thanks in advance! Any insight would be appreciated from JavaScript or frontend devs who've handled similar browser behavior.


Подробнее здесь: https://stackoverflow.com/questions/797 ... t-using-se
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»