Comment peut-on prévenir le javascript de la page à partir de naviguer à l'extérieur?
Réponses
Trop de publicités?À l'aide de onunload vous permet seulement d'afficher des messages, mais de ne pas interrompre la navigation (parce que c'est trop tard). Toutefois, vous pouvez utiliser onbeforeunload et il va interrompre la navigation:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
EDIT: Supprimé confirmer() dans une instruction de retour comme cela a provoqué une fenêtre de confirmation comme prévu, mais a également montré un deuxième confirmer avec le résultat de la première confirmer.
Je sais que c'est vieux, et je suis d'accord, il ne devrait jamais être fait, mais dans l'intérêt de toute la connaissance, cet extrait ne sera pas permettre à l'utilisateur de quitter la page.
var allowLeaving;
(function() {
var bIntercepting = false;
var oInterceptingInterval = window.setInterval(function() {
if(bIntercepting) {
document.location.href = document.location.href + '#__' + Math.random();
bIntercepting = false;
}
}, 1);
window.addEventListener('beforeunload', function() {
bIntercepting = true;
}, false);
window.addEventListener('unload', function() {
bIntercepting = true;
}, false);
allowLeaving = function() {
window.clearInterval(oInterceptingInterval);
};
})();
Elle exporte une seule méthode allowLeaving
qui le désactive. Cette même technique peut également être utilisé pour prévenir cadre de l'éclatement de dans la plupart des navigateurs.
J'ai fini avec cette version légèrement différente:
var dirty = false;
window.onbeforeunload = function() {
return dirty ? "If you leave this page you will lose your unsaved changes." : null;
}
D'ailleurs j'ai mis le drapeau sale à true lorsque le formulaire est sali (ou sinon je veux éviter de naviguer à l'extérieur). Cela me permet de facilement contrôler si oui ou non l'utilisateur obtient le Confirmer invite de Navigation.
Avec le texte de la réponse choisie vous voir redondant invites:
Utilisation onunload.
Pour jQuery, je pense que cela fonctionne comme ceci:
$(window).unload(function() {
alert("Unloading");
return falseIfYouWantToButBeCareful();
});