2013-08-27 18 views
43

Jak się dowiedzieć w firefox, czy kliknięto przycisk odświeżania lub kliknięto przycisk wstecz przeglądarki ... dla obu zdarzeń onbeforeunload() Metoda to wywołanie zwrotne. Dla IE jestem obsługi tak:Jak sprawdzić, czy przycisk odświeżania lub przycisk powrotu przeglądarki jest kliknięty w firefox

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();"> 

Ale Firefox event.clientX i event.clientY są zawsze 0. Czy jest jakiś inny sposób, żeby go znaleźć?

+2

Można użyć API historii i obsługiwać cały proces nawigacji prawie samodzielnie. Zobacz https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history –

+3

Pamiętaj, że odświeżanie można również wykonać za pomocą klawiszy F5, CTRL + R, a nawigację można również przeprowadzić za pomocą klawiatury, i jest różny w różnych przeglądarkach i systemach operacyjnych. – Uooo

+2

BTW, czy chcesz zrobić to w różnych przeglądarkach lub tylko w Firefoksie? Twój tytuł mówi o firefoxie, ale tagi mówią o różnych przeglądarkach. – Uooo

Odpowiedz

5

Dla Wstecz w jQuery // http://code.jquery.com/jquery-latest.js

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

w HTML5 nie jest wydarzeniem Impreza nazywa się 'popstate'

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

i dla odświeżenia sprawdź Check if page gets reloaded or refreshed in Javascript

W Mozilli klient-x i klient-y jest wewnątrz obszaru dokumentu https://developer.mozilla.org/en-US/docs/Web/API/event.clientX

+0

To samo działa na html4 – Android

+0

zdarzenie popstate jest zdefiniowane w html5. więc będzie działać tylko z przeglądarką zgodną z HTML5. – developerCK

11

Użyj „zdarzeń. currentTarget.performance.navigation.type "w celu określenia typu nawigacji. To działa w IE, FF i 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"); 
     }   
    } 
} 
+2

event.currentTarget.performance.navigation.type nie jest działa dla mnie, nawet event.currentTarget.performance jest dla mnie niezdefiniowany. pomożecie Ci w tym więcej, trochę więcej kodu lub skryptu. – Coding

+0

Czy możesz podać wersję FF, z której korzystasz? –

+0

próbowałem w Firefoksie 23.0.1 również ale nadal nie działa – Coding

-9
var keyCode = evt.keyCode; 
if (keyCode==8) 
alert('you pressed backspace'); 

if(keyCode==116) 
alert('you pressed f5 to reload page') 
+1

co, jeśli jakiś użytkownik używa myszy zamiast klawiszy? – Joshua

+0

Nie dałem pełnego rozwiązania, właśnie przedstawiłem pomysł, aby pomóc, w końcu programista powinien wydostać się z niego –

+0

, a także do nawigacji za pomocą myszki, jest cały tutorial na stronie twórców Mozilli, na przykład jest okno. powrót, który jest funkcją javascript do wskazywania przeglądarki dla poprzedniej strony –

Powiązane problemy