2017-08-30 4 views
0

J'ai l'application réagjs, j'essaie de montrer l'alerte sur le navigateur fermer.mais un comportement incohérent arrive. Parfois, il ne se déclenche pas l'alerte sur la mise à jour du navigateur, mais parfois, il montre le alert.Below est mon code: -onbeforeunload onunload performance.navigation.type ne fonctionne pas correctement

window.onbeforeunload =() => { 
    let msg =undefined; 
    if (window.performance && performance && performance.navigation.type == 1){ 

    } 
    else{ 
     msg ='Are you sure?'; 
    } 
    return msg; 
}; 
window.onunload =() => { 
     if (localStorage.getItem('state')) { 
      localStorage.removeItem('state'); 
     } 
    } 

Maintenant parfois montrer l'alerte sur le clic de bouton de fermeture du navigateur, mais parfois la fermeture du navigateur sans avertissement, aussi un certain temps sur l'alerte d'actualisation vient qui n'est pas prévu dans mon scénario. Je veux montrer l'alerte seulement sur la fin du browser.S'il vous plaît aidez-moi comment je peux gérer ce scénario. Beaucoup de questions en double sont comme ceci également présent dans StackOverflow mais toutes les réponses sont anciennes et n'utilisent pas le concept de navigateur moderne.

Répondre

1

Vous ne pouvez pas détecter si l'utilisateur souhaite recharger ou s'il souhaite modifier la page dans les événements window.onbeforeunload ou window.onunload.

L'API PerformanceNavigation vous indique uniquement comment l'utilisateur est allé à la page en cours, et non comment il accède à la page suivante sur les événements window.onbeforeunload ou window.onunload.

+0

Comment puis-je afficher l'alerte uniquement à la fermeture du navigateur. – jack123

+0

Vous ne pouvez pas, lisez ma réponse. –

+0

Pourquoi la downvote? –