web-dev-qa-db-fra.com

Comment savoir si un bouton d'actualisation ou de retour du navigateur a été cliqué dans Firefox

Comment savoir dans Firefox si l'on clique sur le bouton d'actualisation ou sur le bouton Précédent du navigateur ... pour les deux événements, la méthode onbeforeunload() est un rappel. Pour IE je gère comme ceci:

function CallbackFunction(event) {
    if (window.event) {
        if (window.event.clientX < 40 && window.event.clientY < 0) {
            alert("back button is clicked");
        }else{
            alert("refresh button is clicked");
        }
    }else{
        // want some condition here so that I can differentiate between
        // whether refresh button is clicked or back button is clicked.
    }
}

<body onbeforeunload="CallbackFunction();"> 

Mais dans Firefox event.clientX et event.clientY sont toujours égaux à 0. Existe-t-il un autre moyen de le trouver?

47
Coding

Utiliser pour l'actualisation de l'événement

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};

https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload?redirectlocale=en-US&redirectslug=DOM%2Fwindow.onbeforeunload

Et

$(window).unload(function() {
      alert('Handler for .unload() called.');
});
53
Er.KT

Utilisez 'event.currentTarget.performance.navigation.type' pour déterminer le type de navigation. Cela fonctionne dans IE, FF et Chrome.

function CallbackFunction(event) {
    if(window.event) {
        if (window.event.clientX < 40 && window.event.clientY < 0) {
            alert("back button is clicked");
        }else{
            alert("refresh button is clicked");
        }
    }else{
        if (event.currentTarget.performance.navigation.type == 2) {
            alert("back button is clicked");
        }
        if (event.currentTarget.performance.navigation.type == 1) {
            alert("refresh button is clicked");
        }           
    }
}
11
Vipin Malik

Pour le bouton Précédent dans jquery // http://code.jquery.com/jquery-latest.js

 jQuery(window).bind("unload", function() { //

et en html5 il y a un événement L'événement s'appelle 'popstate'

window.onpopstate = function(event) {
alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
};

et pour l'actualisation, veuillez vérifier Vérifiez si la page est rechargée ou actualisée en Javascript

Dans Mozilla, Client-x et client-y se trouvent dans la zone de document https://developer.mozilla.org/en-US/docs/Web/API/event.clientX

5
developerCK