Comment empêcher une page Web de naviguer à l'aide de JavaScript?Empêcher une page Web de naviguer à l'aide de JavaScript
Répondre
En utilisant onunload
ne vous permet d'afficher des messages, mais il ne sera pas interrompre la navigation (car il est trop tard). Cependant, vous pouvez utiliser onbeforeunload
et interromprez navigation:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
Modifier: Suppression confirm()
dans la déclaration de retour comme cela a causé une fenêtre de confirmation comme prévu, mais a également montré une seconde confirmation du résultat de la première confirmation .
Le navigateur affichera une invite appropriée. Utilisez simplement 'window.onbeforeunload = function() {return" "; } ' –
Mais ce n'est pas suffisant. Qu'en est-il des contrôles à l'intérieur du formulaire? Ils déclenchent cela aussi. – Fandango68
Utilisez onunload.
Pour jQuery, je pense que cela fonctionne comme ceci:
$(window).unload(function() {
alert("Unloading");
return falseIfYouWantToButBeCareful();
});
Merci beaucoup ... –
Renvoyer false n'annule pas le déchargement malheureusement - l'événement 'unload' se déclenche quand l'utilisateur quitte la page, contrairement à' beforeunload' qui se déclenche juste avant (et peut être annulé) – Jimbo
@ altCognito: Vous m'avez donné une bonne idée avec falseIfYouWantToButBeCareful() Maintenant, je peux éviter la pop up par défaut donnée par IE ou FF. Mais pour le chrome ça ne marche pas. En regardant dedans. – user367134
Dans l'exemple de Ayman en retournant faux vous empêchez la fenêtre du navigateur/onglet de fermeture.
window.onunload = function() {
alert('You are trying to leave.');
return false;
}
Merci beaucoup ... –
Sauf si le navigateur est Opera, qui saute l'événement onunload si l'onglet/fenêtre/programme est en cours de fermeture. – Powerlord
Ce message d'erreur suggéré peut dupliquer le message d'erreur déjà affiché par le navigateur. En chrome, les 2 messages d'erreur similaires s'affichent les uns après les autres dans la même fenêtre.
En chrome, le texte affiché après le message personnalisé est: "Êtes-vous sûr de vouloir quitter cette page?". Dans Firefox, il n'affiche pas du tout notre message d'erreur personnalisé (mais affiche toujours la boîte de dialogue).
Un message d'erreur plus appropriée pourrait être:
window.onbeforeunload = function() {
return "If you leave this page, you will lose any unsaved changes.";
}
ou le style stackoverflow: "Vous avez commencé à écrire ou éditer un message."
Contrairement aux autres méthodes présentées ici, ce bit de code pas provoque l'affichage d'un avertissement par le navigateur demandant à l'utilisateur s'il veut partir; à la place, il exploite la nature événementielle du DOM pour rediriger vers la page en cours (et ainsi annuler la navigation) avant que le navigateur ait la possibilité de le décharger de la mémoire.
Comme il fonctionne en court-circuitant la navigation directement, il ne peut pas être utilisé pour empêcher la fermeture de la page; Cependant, il peut être utilisé pour désactiver le contournement des images.
(function() {
var location = window.document.location;
var preventNavigation = function() {
var originalHashValue = location.hash;
window.setTimeout(function() {
location.hash = 'preventNavigation' + ~~ (9999 * Math.random());
location.hash = originalHashValue;
}, 0);
};
window.addEventListener('beforeunload', preventNavigation, false);
window.addEventListener('unload', preventNavigation, false);
})();
Avertissement: Vous ne devriez jamais faire cela. Si une page comporte un code de suppression de trame, veuillez respecter les souhaits de l'auteur.
comment montrer modale si l'utilisateur veut fermer le navigateur (cliquez sur fermer)? vraiment? –
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;
}
Ailleurs, je mis le drapeau sale vrai lorsque le formulaire est salie (ou je veux autrement pour empêcher la navigation loin). Cela me permet de contrôler facilement si l'utilisateur reçoit ou non l'invite Confirmer la navigation.
Avec le texte de la réponse sélectionnée vous voyez les invites redondantes:
Dans IE si dirty est faux, une chaîne 'null' sera affichée. Juste enveloppez-le dans une déclaration if. Voir: http://stackoverflow.com/questions/11793996/onbeforeunhand-handler-says-null-in-ie –
L'équivalent à la réponse acceptée dans jQuery 1.11:
$(window).on("beforeunload", function() {
return "Please don't leave me!";
});
réponse de altCognito utilisée l'événement unload
, qui arrive trop tard pour que JavaScript arrête la navigation tion.
L'équivalent d'une manière plus moderne et compatible avec le navigateur, en utilisant les API addEventListener modernes.
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
e.returnValue = confirmationMessage; // Gecko and Trident
return confirmationMessage; // Gecko and WebKit
});
Source: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
Ceci est une bonne solution. –
- 1. Page Web AJAX permettant de naviguer sur la page précédente
- 2. Envoyer une page Web par javascript
- 3. Script de connexion à une page Web
- 4. Comment naviguer dans href dans une balise d'ancrage via JavaScript
- 5. structure de données laide à la recherche java
- 6. Empêcher Yahoo OpenID de rediriger la page
- 7. Une bibliothèque qui permet d'ajouter des notes de bas de page à une page Web
- 8. Dans Silverlight, comment lancer/naviguer vers une autre page?
- 9. Comment ajouter une page Web à une définition de site?
- 10. Empêcher l'accès direct au service Web JSON
- 11. Code Python pour télécharger une page Web en utilisant JavaScript
- 12. Empêcher d'exécuter une fonction JavaScript plusieurs fois
- 13. PHP: empêcher l'accès direct à la page
- 14. ASP.NET - Empêcher l'actualisation de page avec ModalPopupExtender
- 15. Enveloppement de mots sur une page Web
- 16. Comptage d'éléments de page Web entièrement chargés dans javascript
- 17. Comment puis-je naviguer vers une autre page à partir d'un bouton?
- 18. Empêcher l'exécution de javascript dans IE6
- 19. comment empêcher le moteur de recherche d'indexer seulement une partie de ma page
- 20. simuler une frappe de page Web
- 21. problèmes de WordWrap sur une page Web
- 22. Dois-je naviguer vers un URI relatif ou naviguer vers une nouvelle instance d'une page dans WPF?
- 23. Comment empêcher une application Flex de s'exécuter uniquement à partir de mon site Web?
- 24. empêcher l'exécution de JS lorsque la page n'est pas chargée
- 25. Injecter Javascript dans une page
- 26. difficulté à naviguer les DOM jQuery
- 27. Vérification de la date à laquelle une page Web a été mise à jour?
- 28. Lecture de flux audio sur une page Web
- 29. Valeurs de limite de page Web
- 30. Utilisation d'un bouton pour naviguer vers une autre page dans une NavigationWindow
Ce qui rend cette page quittiez? – Niyaz
Selon la question, JavaScript le fait partir ... – Shog9
Copie possible de [Comment afficher le "Êtes-vous sûr de vouloir quitter cette page?" quand des changements sont commis?] (http://stackoverflow.com/questions/1119289/how-to-show-the-are-you-sure-you-want-to-navigate-away-from-this-page-when- ch) –