Cancella localStorage sulla scheda / browser chiudi ma non sull’aggiornamento

C’è un modo per rilevare la tab chiusura evento per cancellare il localStorage . Ho bisogno di localStorage per condividere i dati tra le tabs. window.onbeforeunload evento window.onbeforeunload funziona bene ma ha 2 problemi per me:

  1. Spara anche sull’aggiornamento della pagina che non desidero.
  2. Non ho bisogno di confermare la casella sulla chiusura delle tabs.

Come quando la finestra è chiusa, sessionStorage viene cancellato. Allo stesso tempo posso cancellare localStorage ma non so a quale evento associare. Ho controllato alcune domande già disponibili, ma nessuna sembra risolvere questo problema. Ci sono soluzioni alternative che utilizzano i flag per fare clic sui collegamenti e sui moduli inviati ma non un modo pulito per farlo. Si prega di suggerire qualsiasi soluzione per questo.

Sono stato in grado di trovare una soluzione a questo e ho pensato di condividere. Dal momento che l’evento window.onbeforeunload si triggers su browser / scheda close ma anche su refresh (cosa che non volevo) la cosa era che la mia localstorage veniva elaborata anche al momento di rfresh. Quale non volevo. Per ovviare a questo ho implementato un altro gestore di eventi window.onload che si triggers solo su refresh e non su tab / browser close dove resettare il localStorage come se nulla fosse accaduto. Il codice è:

 window.onbeforeunload = function (e) { window.onunload = function () { window.localStorage.isMySessionActive = "false"; } return undefined; }; window.onload = function () { window.localStorage.isMySessionActive = "true"; }; 

Sono tornato indefinito in window.onbeforeunload perché non volevo che un popup di conferma appaia in tab / browser chiudi e aggiorni.

Utilizzare invece SessionStorage . Viene cancellato ogni volta che la scheda viene chiusa.