Ceci est le code que j'ai utilisé pour ceci fonctionne avec ie strong> et mozilla fort> mais ne fonctionne pas avec chrome fort> ..... S'il vous plaît aider ......
merci d'avance ..... p> p> window.onbeforeunload code>
10 Réponses :
Essayez ceci. Je l'ai essayé et ça marche. Intéressant mais le message de réussite n'a pas besoin de confirmation comme l'autre message.
window.onbeforeunload = function() { if ( window.XMLHttpRequest ) { console.log("before"); //alert("before"); var request = new XMLHttpRequest(); request.open("POST", "exit.php", true); request.onreadystatechange = function () { if ( request.readyState == 4 && request.status == 200 ) { console.log("Succes!"); //alert("Succes!"); } }; request.send(); } }
Vous ne pouvez pas faire une alerte. Puisque le moteur JavaScript ne vous permettra pas d'exécuter un script de blocage.
Il semble que la seule chose que vous puissiez faire avec Onbeforeunload dans une version récente de Chrome est de définir le message d'avertissement.
window.onbeforeunload = function () { return "Are you sure"; };
Toujours vrai aujourd'hui, avec la version chromée 24.0.1312.57 m. Veuillez également noter que vous ne pouvez pas vérifier la version du navigateur et lancer un message différent à l'utilisateur ... Si vous placez le retour "êtes-vous sûr"; code> à l'intérieur d'un
si Code> Déclaration, Chrome ignore aussi.
Et si vous placez window.onbeforeunload = fonction () {retour "Êtes-vous sûr"; }; code> à l'intérieur du si?
Aidez-moi à sortir ... comment / quand allez-vous exécuter le si? Sur la charge de document?
Oui. Ou si votre site est généré de manière dynamique (PHP ou autre langue), vous pouvez probablement injecter le script avec Onbeforeunload uniquement lorsque le BVROWSER n'est pas chrome.
a confirmé ce comportement sur chrome 21.0.1180.79 P>
Ceci semble fonctionner avec les mêmes restritions que XSS, si vous actualisez la page ou ouvrez une page sur le même port + port, le script est exécuté, sinon elle ne sera exécutée que si vous retournez une chaîne (ou similaire. ) et une boîte de dialogue sera affichée demandant à l'utilisateur s'il veut se pencher ou rester dans la page. P>
Il s'agit d'une incroyable chose stupide à faire, car Onunload / OnbeForeunload ne sont pas seulement utilisés pour demander / prévenir les modifications de la page. P>
Dans mon cas, je l'utilisais aussi Enregistrer certaines modifications effectuées pendant la page édition et je ne veux pas empêcher que l'utilisateur de modifier la page (au moins chrome devrait respecter le retour ou modifier la page sans demander si le retour est Pas une chaîne), les restrictions de temps de fonctionnement du script seraient enrichies. P>
Ceci est spécialement ennuyeux dans le chrome car l'événement Onblur n'est pas envoyé aux éléments d'édition lors du déchargement d'une page, Chrome simplement IGores la page Current et saute à une autre. Donc, le seul changement de sauvegarde des modifications était le processus de déchargement et il ne peut maintenant être fait sans la question stupide si l'utilisateur veut le changer ... Bien sûr qu'il veut et je ne voulais pas empêcher cela ... p>
Hope Chrome résout ce problème de manière plus élégante. p>
Que suggéreriez-vous d'avoir une animation de sortie ajoutée à un élément puis au lieu de window.onbeforeunload?
Essayez ceci, cela a fonctionné pour moi:
window.onbeforeunload = function(event) { event.returnValue = "Write something clever here.."; };
Cela a fonctionné bien pour moi et je pouvais également ajouter du code (vider certains éléments de stockage locaux) à exécuter avant l'événement.Returnvalue. Une amélioration pourrait pour enregistrer l'événement onBeForRunload comme aligné par développeur.mozilla. org / fr-nous / docs / web / événements / à propos de la fenêtre window.addeventListener ('Ofunload', fonction (e) {...
Les versions actuelles de Chrome nécessitent la définition de la propriété de l'événement code>. Il suffit de retourner une chaîne du gestionnaire d'événements ne déclenchera pas l'alerte.
addEventListener('beforeunload', function(event) {
event.returnValue = 'You have unsaved changes.';
});
Sachez que je suis en retard à cela, mais vous vous grattiiez la tête pourquoi mon message à l'avant-garde personnalisé ne fonctionnait pas à Chrome et lisait ceci. Donc, au cas où quelqu'un d'autre fait la même chose, Chrome à partir de la version 51 ne prend plus en charge les messages personnalisés sur Ofunload. Apparemment, c'est parce que la fonctionnalité a été mal utilisée par diverses escroqueries. Au lieu de cela, vous obtenez un message chrome prédéfini qui peut ou non répondre à vos objectifs. Plus de détails à: p>
Personnellement, je ne pense pas que le message qu'ils ont choisi est un excellent, car il mentionne le site et l'une des utilisations légitimes les plus courantes pour Onbeforeunload est pour le traitement / la vérification du drapeau sale sur un formulaire Web, il n'est donc pas un excellent formulaire. Comme beaucoup de temps, l'utilisateur sera toujours sur votre site, vous avez cliqué sur le bouton Annuler ou recharger par erreur. P>
Je cours chrome sur MacOS High Sierra et j'ai un projet 6 angulaires Whithin I Manipulez la fenêtre.BeForeRunload une fenêtre.Enbeforeunload Events. Vous pouvez faire cela, ça a fonctionné pour moi:
handleUnload(event) { // Chrome event.returnValue = true; }
Vous devriez essayer ceci:
<head> <script> window.onbeforeunload = function(e) { e.returnValue = 'onbeforeunload'; func(); return ''onbeforeunload''; }; function func() { var request = new XMLHttpRequest(); request.open("POST", "exit.php", true); request.onreadystatechange = stateChanged; request.send(null); } function stateChanged() { if (request.readyState == 4 || request.readyState == "complete") alert("Succes!"); } </script> </head>
Aucune de ces réponses a fonctionné pour moi. J'envoie un message du script de contenu -> Script d'arrière-plan dans la fonction d'événement avant le déchargement. Qu'est-ce que le travail a eu lieu lorsque j'ai défini persistant à vrai (en fait, vous pouvez simplement supprimer la ligne de la ligne) dans le manifeste: la logique est expliquée à cette question de la question ici . p> p> p>
Je ne sais pas si cela permet aux messages personnalisés d'afficher sur le navigateur.
<script type="text/javascript"> window.addEventListener("beforeunload", function(e) { e.preventDefault(); // firefox e.returnValue = ''; // Chrome }); </script>
Voir