Wie erkennt man das manuelle oder programmgesteuerte Neuladen von Seiten in JavaScript, ohne „sessionStorage“, „localStoHTML

HTML-Programmierer
Anonymous
 Wie erkennt man das manuelle oder programmgesteuerte Neuladen von Seiten in JavaScript, ohne „sessionStorage“, „localSto

Post by Anonymous »

Ich versuche, eine Funktion zu erstellen, bei der ich eine UI-Eingabeaufforderung zeige, wenn der Benutzer die Seite manuell neu lädt (über F5, Strg+R oder die Browser-Aktualisierungsschaltfläche), aber ich möchte diese Eingabeaufforderung überspringen, wenn das Neuladen durch location.reload() in meinem eigenen JavaScript-Code ausgelöst wurde.
🚫 Einschränkungen
Ich kann Folgendes nicht verwenden:
  • Code: Select all

    sessionStorage
    [*]localStorage
    [*]Cookies
    [*]URL query parameters
    [*]Global JavaScript flags
    [/list]
    The reason is that the project is a [b]large Ruby on Rails application[/b], and injecting state (e.g., sessionStorage.setItem(...)
    ) vor jedem programmatischen Neuladen ist nicht durchführbar oder wartbar.
    Was ich versucht habe
    ✅ Was ich versucht habe
    Ich verwende derzeit die Navigation Timing API, um Neuladungen zu erkennen:

    Code: Select all

    const navEntry = performance.getEntriesByType('navigation')[0];
    const navType = navEntry?.type;
    
    if (navType === 'reload') {
    // Show prompt
    }
    
    
    Dies erkennt korrekt, dass ein Neuladen stattgefunden hat, sagt mir aber nicht, wie es ausgelöst wurde.
    ❓ Was ich brauche
    Ich möchte erkennen:
    ✅ Manuelle Neuladungen → Eingabeaufforderung anzeigen
    ❌ Programmatische Neuladungen über location.reload() → Eingabeaufforderung nicht anzeigen
    🧠 Meine Frage
    Gibt es in JavaScript eine Möglichkeit:
    Erkennen, wie ein Seitenneuladen ausgelöst wurde (manuell oder programmgesteuert)?
    Tun Sie dies, ohne sich auf externe Zustände wie SessionStorage, Cookies oder Abfrageparameter zu verlassen?
    Gibt es Browser-APIs, Ereignisse oder zuverlässige Muster/Hacks, die Entwickler hierfür verwenden?
    Mir ist bewusst, dass dies möglicherweise nicht nativ unterstützt wird, daher bin ich offen für clevere Problemumgehungen
    Vielen Dank im Voraus! Jeder Einblick von JavaScript- oder Frontend-Entwicklern, die mit einem ähnlichen Browserverhalten umgegangen sind, wäre dankbar.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post