2010-01-05 28 views
14

Khi người dùng truy cập lại lịch sử-1 ... làm cách nào để phát hiện ra điều đó? Và sau đó, cảnh báo "người dùng đã nhấp lại!"Cách phát hiện xem người dùng đã nhấp vào nút "quay lại"

Sử dụng các liên kết (và tốt hơn hết là jquery)

+3

Alex, bạn chỉ cần hỏi một câu hỏi tương tự tại http://stackoverflow.com/questions/2008765/in-javascript-perferably-jquery-how-do-i-add-something-to-the-url-when-the-user Đừng spam. –

Trả lời

20

Bạn thường không thể (hạn chế bảo mật trình duyệt). Bạn có thể biết liệu người dùng có điều hướng khỏi trang (onbeforeunload, onunload fire) hay không nhưng bạn không thể biết họ đã đi đâu trừ khi bạn đã thiết lập trang của mình để cho phép.

HTML5 giới thiệu API lịch sử HTML5; trong các trình duyệt phù hợp, sự kiện onpopstate sẽ kích hoạt nếu người dùng điều hướng trở lại "trang" trước đó trên trang web của bạn.

+0

Điều này thì sao? http://stackoverflow.com/questions/10462511/is-there-a-way-using-jquery-to-detect-the-back-button-being-pressed-cross-browse –

+1

Bạn có thể tạo các trang theo cách như vậy có thể phát hiện được, nhưng cách duy nhất bạn có thể biết nơi họ đến là nếu họ tình cờ điều hướng đến một trang khác trên trang web của bạn (nơi bạn kiểm soát JavaScript). Làm thế nào để xây dựng một kịch bản như vậy? Khi người dùng truy cập "PageA.htm", bạn ngay lập tức gửi họ đến "PageB.htm" và nếu họ tải lại "PageA.htm", bạn có thể "đoán" rằng họ đã truy cập "Quay lại". – EricLaw

6

thử:

window.onbeforeunload = function (evt) { 
    var message = 'Are you sure you want to leave?'; 
    if (typeof evt == 'undefined') { 
    evt = window.event; 
    } 
    if (evt) { 
    evt.returnValue = message; 
    } 
    return message; 
} 
+0

OnBeforeUnload cũng sẽ kích hoạt nếu người dùng truy cập vào một số trang web khác. – EricLaw

+0

có cách nào để không hiển thị thông điệp cảnh báo không? –

2
window.onpopstate=function() 
{ 
    alert("Back/Forward clicked!"); 
} 
+5

Điều này sẽ không kích hoạt nếu bạn truy cập ** một trang ** khác và sau đó quay lại trang này. – Pacerier

-2

Trên trang web mà bạn đang xem xét, bạn có thể thêm đoạn mã này với sự kiện onLoad để di chuyển chúng trở lại trang họ đang ở trên.

if(history.length>0)history.go(+1) 

Nếu bạn muốn cảnh báo sau đó làm cho nó

if(history.length>0)alert("the user clicked back!") 
+0

Sẽ không hoạt động cho các trang web một trang. – ShrekOverflow

+0

Sẽ không làm việc cho bất cứ điều gì. 'history.length> 0' sẽ cung cấp cho bạn đúng ngay cả khi nó là một trang hoàn toàn mới. Nó cung cấp cho bạn [toàn bộ chiều dài lịch sử] (http://stackoverflow.com/a/9757655/632951) ** bao gồm ** các trang về sau và chuyển tiếp. – Pacerier

0

Sau đây là các bước để phát hiện trở lại nút bấm

  1. Đăng ký một chuột xuống sự kiện trên cơ thể $('body').on('mousedown' ,'on all li');

    2.Bây giờ thiết lập một biến khi sự kiện mousedown xảy ra.

    3.Kiểm tra biến này khi vị trí của bạn thay đổi.

NẾU chages biến true nó có nghĩa là danh sách cliked khác backbutton

Công việc này trong usecase tôi .Đây giải pháp có thể giúp những người khác bởi vì nó phụ thuộc vào thiết kế ứng dụng

Các vấn đề liên quan