2010-08-20 59 views
140

Có cách nào để lấy URL trước đó trong JavaScript không? Một cái gì đó như thế này:Cách lấy URL trước trong JavaScript?

alert("previous url is: " + window.history.previous.href); 

Có điều gì tương tự không? Hoặc tôi nên lưu trữ nó trong một cookie? Tôi chỉ cần biết vì vậy tôi có thể chuyển tiếp từ URL trước đó sang URL hiện tại mà không cần neo và tất cả điều đó.

Trả lời

221
document.referrer 

trong nhiều trường hợp sẽ giúp bạn có được URL của trang cuối cùng người dùng truy cập, nếu họ đã đến trang hiện tại bằng cách nhấp chuột vào một liên kết (so với cách gõ trực tiếp vào thanh địa chỉ, hoặc tôi tin rằng trong một số trường hợp, bằng cách gửi biểu mẫu?). Được chỉ định bởi DOM Level 2. More here.

window.history cho phép điều hướng, nhưng không truy cập vào URL trong phiên vì lý do bảo mật và quyền riêng tư. Nếu có lịch sử URL chi tiết hơn, thì mọi trang web bạn truy cập đều có thể xem tất cả các trang web khác mà bạn đã truy cập.

Nếu bạn đang xử lý trạng thái di chuyển xung quanh trang web của riêng mình, thì có thể ít sử dụng các kỹ thuật quản lý phiên thông thường hơn: dữ liệu cookie, thông số URL hoặc thông tin phiên phía máy chủ.

+4

Ngoài ra còn có document.referrer, nếu bạn đã đến trang hiện tại thông qua một liên kết (nhưng không, ví dụ, bằng cách đánh dấu hoặc gõ vào thanh địa chỉ). – Hellion

+1

Nó không phải lúc nào cũng hoạt động. I E. iframe. –

+0

Cảm ơn, đã thêm ghi chú lại: document.referrer. –

18
document.referrer 

Đây là tiêu chuẩn, URL này sẽ cung cấp URL mà bạn đã truy cập.

0

document.referrer sẽ cung cấp URL trang trước nhưng nó sẽ hoạt động cho tất cả các trình duyệt như Opera, Mozilla Firefox, Safari, v.v. nhưng không hoạt động trong Internet Explorer. Nó sẽ dẫn đến null khi bạn sử dụng document.referrer trong IE.

+4

không hoàn toàn đúng đối với IE! –

+0

Hoạt động trong IE 9 cho tôi – frodo2975

14

document.referrer không giống với URL thực tế trong mọi tình huống.

Tôi có một ứng dụng mà tôi cần thiết lập bộ khung với 2 khung hình. Một khung được biết, cái kia là trang tôi đang liên kết. Có vẻ như document.referrer sẽ lý tưởng vì bạn sẽ không phải chuyển tên tệp thực tế cho tài liệu bộ khung.

Tuy nhiên, nếu sau này bạn thay đổi trang khung dưới cùng và sau đó sử dụng history.back() nó không tải trang gốc vào khung dưới cùng, thay vào đó tải lại document.referrer và kết quả là bộ khung đã biến mất và bạn quay lại khởi đầu ban đầu cửa sổ.

Hãy cho tôi một chút thời gian để hiểu điều này. Vì vậy, trong mảng lịch sử, document.referrer không chỉ là một URL, nó rõ ràng là đặc tả cửa sổ liên kết giới thiệu. Ít nhất, đó là cách tốt nhất tôi có thể hiểu nó vào lúc này.

9

Nếu bạn muốn truy cập trang trước đó mà không biết url, bạn có thể sử dụng api Lịch sử mới.

history.back(); //Go to the previous page 
history.forward(); //Go to the next page in the stack 
history.go(index); //Where index could be 1, -1, 56, etc. 

Nhưng bạn không thể thao tác các nội dung về lịch sử ngăn xếp trên trình duyệt mà không hỗ trợ API Lịch sử HTML5

Để biết thêm thông tin xem các doc

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