2013-08-27 65 views
43

Cách biết trong firefox cho dù nút làm mới được nhấp hay nút quay lại trình duyệt được nhấp ... cho cả hai sự kiện phương thức onbeforeunload() là gọi lại. Đối với IE tôi đang xử lý như thế này:Cách biết nút làm mới hoặc nút quay lại trình duyệt được nhấp trong 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();"> 

Nhưng trong Firefox event.clientXevent.clientY luôn 0. Có cách nào khác để tìm nó?

+2

Bạn có thể sử dụng API lịch sử và xử lý toàn bộ quá trình chuyển hướng khá nhiều chính mình. Xem https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history –

+3

Lưu ý rằng làm mới cũng có thể được thực hiện bằng cách sử dụng F5, CTRL + R và điều hướng cũng có thể được thực hiện tốt bằng cách sử dụng bàn phím, và nó khác nhau trong các trình duyệt và hệ điều hành khác nhau. – Uooo

+2

BTW, bạn có muốn thực hiện trình duyệt chéo này hoặc chỉ trong firefox không? Tiêu đề của bạn nói firefox, nhưng các thẻ nói qua trình duyệt. – Uooo

Trả lời

5

Đối Nút Quay lại trong jquery // http://code.jquery.com/jquery-latest.js

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

và trong html5 có một sự kiện Sự kiện này được gọi là 'popstate'

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

và cho refresh xin vui lòng kiểm tra Check if page gets reloaded or refreshed in Javascript

Trong Mozilla Client-x và client-y là bên trong khu vực tài liệu https://developer.mozilla.org/en-US/docs/Web/API/event.clientX

+0

Điều tương tự cũng có trên html4 – Android

+0

sự kiện popstate được định nghĩa trong html5. do đó, nó sẽ chỉ hoạt động với trình duyệt tương thích html5. – developerCK

43

Mục đích SD trên refresh sự kiện

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

$(window).unload(function() { 
     alert('Handler for .unload() called.'); 
}); 
+0

+1 - Câu trả lời tuyệt vời !! – Rikesh

+0

thanks rikesh, :) –

+24

Làm cách nào để phân biệt giữa tải lại và nút quay lại? –

11

kiện Sử dụng'. currentTarget.performance.navigation.type 'để xác định loại điều hướng. Tính năng này đang hoạt động trong IE, FF và 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 không làm việc cho tôi, ngay cả event.currentTarget.performance đang hiển thị không xác định cho tôi. bạn sẽ giúp đỡ nhiều hơn về điều này, mã nhiều hơn hoặc kịch bản. – Coding

+0

Bạn có thể cung cấp phiên bản FF bạn đang sử dụng không? –

+0

tôi đã thử trong Firefox 23.0.1 cũng nhưng vẫn không hoạt động – Coding

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

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

điều gì xảy ra nếu một số người dùng sử dụng chuột thay vì phím? – Joshua

+0

tôi không đưa ra giải pháp đầy đủ, tôi chỉ trình bày ý tưởng để giúp, trong lập trình viên cuối cùng nên làm việc theo cách của mình ra –

+0

và cũng để điều hướng qua chuột, có toàn bộ hướng dẫn trên trang web của nhà phát triển Mozilla, ví dụ như cửa sổ. trở lại là chức năng javascript để trỏ trình duyệt cho trang trước –