de la fenêtre.onbeforeunload feu à plusieurs reprises

Juste parce que vous ne voyez pas l'utiliser pour une fonction ne signifie pas qu'il n'est pas utile.

La Pile réseau Exchange, GMail, Grooveshark, Yahoo! Mail et Hotmail utiliser le onbeforeunload invite à éviter/avertir les utilisateurs qu'ils sont de quitter une page après qu'ils ont commencé le montage de quelque chose. Ah oui, près de chaque programme de bureau qui accepte saveable utilisateur-données d'entrée utilise cette invite de l'utilisateur avant de quitter UX modèle.


J'ai une fonction qui se comporte de façon similaire à celui-ci:

window.onbeforeunload = function(){
    //only prompt if the flag has been set... 
    if(promptBeforeLeaving === true){
        return "Are you sure you want to leave this page?";
    }
}

Lorsqu'un utilisateur tente quitte la page, le navigateur présente avec la possibilité de partir ou de rester sur la page. Si l'utilisateur sélectionne le "Laissez cette option page", puis ils ont rapidement cliquez sur un lien de nouveau avant que la page ne se décharge complètement la boîte de dialogue déclenche à nouveau.

Sont-il infaillible de solutions à ce problème?


Note: ce qui suit ne sera PAS la solution:

var alreadyPrompted = false;
window.onbeforeunload = function(){
    //only prompt if the flag has been set... 
    if(promptBeforeLeaving === true && alreadyPrompted === false){
        alreadyPrompted = true;
        return "Are you sure you want to leave this page?";
    }
}

parce que l'utilisateur peut sélectionner le "Rester sur la page" option qui serait la cause de l'avenir onbeforeunloads arrêter de travailler.

merci de ne pas inciter les gens à essayer de quitter votre page. s'ils ne veulent pas la quitter, il est certain qu'ils seront, après s'être demandé.
oh ye de peu de connaissances. Je vous mets au défi de commencer à répondre à cette question, puis quittez la page.
J'ai du mal à penser à quelque chose de mieux que d'utiliser un drapeau, mais aussi d'avoir une "mousemove" gestionnaire sur le <body> ou quelque chose qui l'annule.
J'ai essayé, mais le javascript s'exécute à la fois pour "Rester sur cette Page", puis "Quitter la Page" événements".
pour la citation. "oh ye de peu de connaissances"

OriginalL'auteur David Murdoch | 2010-11-08