web-dev-qa-db-fra.com

Alerte avant la fermeture de la page: Comment changer le message par défaut de Chrome?

J'utilise l'extrait de code suivant pour déclencher une alerte avant la fermeture de la page, mais Chrome semble ignorer le message et afficher le message par défaut "Voulez-vous quitter ce site? Les modifications que vous avez apportées pourraient ne pas être enregistrées". Comment faire en sorte que chrome affiche mon message au lieu du message par défaut?

window.onbeforeunload = function(e) {
    e.returnValue = "A search is in progress, do you really want to stop the search and close the tab?";
    return "A search is in progress, do you really want to stop the search and close the tab?";
}
6
Cashif Ilyas

Je viens de me rendre compte récemment que Chrome avait modifié le comportement de onbeforeunload. J'ai trouvé une solution de contournement qui fonctionne pour les principaux navigateurs (testée sous Chrome, Firefox et IE, le jsFiddle pour une raison quelconque ne fonctionne pas dans Firefox, mais mon site Web le fait). À l’aide de jQuery UI, vous pouvez faire apparaître une fenêtre de dialogue lorsque vous quittez la page, qui donne plus d’informations sur les raisons pour lesquelles le fait de quitter la page actuelle poserait problème.

window.onbeforeunload = function (e) {
    $('<div title="Warning!">A search is in progress, do you really want to stop the search and close the tab? If not, choose "Stay on page" on the browser alert.</div>').dialog({
        modal:true,
        close: function(){$(this).dialog('destroy').remove();}
    });
    return "Random message to trigger the browser's native alert.";
}

jsFiddle ici

1
Mar

Mise à jour: Déconseillé dans Chrome: https://developers.google.com/web/updates/2016/04/chrome-51-deprecations?hl=fr

Essayez ce qui suit:

window.onbeforeunload = function (e) {
    e = e || window.event;

    // For IE and Firefox prior to version 4
    if (e) {
        e.returnValue = 'A search is in progress, do you really want to stop the search and close the tab?';
    }

    // For Safari
    return 'A search is in progress, do you really want to stop the search and close the tab?';
};

Message que je reçois dans Chrome (personnalisé et par défaut):

Une recherche est en cours. Voulez-vous vraiment arrêter la recherche et Fermer l'onglet?

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

Source jsFiddle

0
Kairat