6
votes

ONBEFOREUnload Confirmation Screen Personnalisation

est-il possible de créer une zone de confirmation personnalisée pour l'événement OnBeForEunload dans un navigateur? J'ai essayé mais j'obtiens ensuite 2 boîtes de confirmation (une de moi qui n'est rien de plus que le retour de la confirmation ... puis de la standard du navigateur).

Pour le moment, mon code ressemble à: P>

var inputChanged = false;

$(window).load(function() {
    window.onbeforeunload = navigateAway;
    $(':input').bind('change', function() { inputChanged = true; });
});

function navigateAway(){
    if(inputChanged){
        return 'Are you sure you want to navigate away?';
    }
}


0 commentaires

3 Réponses :


3
votes

Non, vous ne pouvez pas éviter le standard du navigateur. Tout ce que vous pouvez faire est d'injecter du texte personnalisé. Si vous utilisez le gestionnaire d'événements suivant (enregistré le prototype Lib Way): xxx

(et showmybeforeunloadconfirmation est vrai) Vous obtiendrez la confirmation standard du navigateur avec ce qui suit Texte:

Êtes-vous sûr de vouloir naviguer loin de cette page?

FOO Bar Baz

Appuyez sur OK pour continuer ou annuler pour rester sur la page en cours.

[OK] [Annuler]


0 commentaires

11
votes
window.onbeforeunload = function (e) {
  var message = "Your confirmation message goes here.",
  e = e || window.event;
  // For IE and Firefox
  if (e) {
    e.returnValue = message;
  }

  // For Safari
  return message;
};
Please note: Most browsers put this message after some other text. You do not have complete control of the content of the confirmation dialog.

1 commentaires

Il est en effet, malheureusement, impossible de remplacer cet écran.



0
votes

J'ai fait face au même problème, j'ai pu obtenir sa propre boîte de dialogue avec mon message, mais les problèmes que j'ai rencontrés étaient les suivants:

  1. Il donnait un message sur toutes les navigations et je le voulais uniquement pour cliquer sur le clic.
  2. Avec mon propre message de confirmation si l'utilisateur sélectionne "Annuler", il affiche toujours la boîte de dialogue par défaut du navigateur.

    Voici le code de solutions que j'ai trouvé, que j'ai écrit sur ma page maître. xxx


0 commentaires