2009-04-17 44 views
5

Tôi có một ứng dụng ajax dựa trên jQuery. Tôi đã bật lịch sử trình duyệt bằng cách sử dụng jQuery history plugin. Nhưng chúng tôi thấy rằng ứng dụng tạo ra quá nhiều lịch sử.Xóa lịch sử trình duyệt bằng cách sử dụng jQuery

Đặc biệt, chúng tôi cung cấp nút "ajax-back" trong trang cho phép trang trở về trạng thái ajax trước đó. Khi nhấn nút "ajax-back" trong trang, chúng tôi muốn nút này hoạt động giống như nút quay lại bằng cách di chuyển chỉ mục hiện tại của lịch sử hoặc xóa bản ghi lịch sử mới nhất, chèn bản ghi lịch sử mới.

Vì vậy, tôi muốn hỏi, có thể xóa bản ghi trình duyệt mới nhất từ ​​javascript không? hoặc có thể sửa đổi chỉ mục hiện tại của danh sách lịch sử trình duyệt không?

Ví dụ dựa trên plugin lịch sử jQuery sẽ được đánh giá rất cao.

Trả lời

7

Rất có thể bạn không thể dễ dàng thực hiện những gì bạn đang cố gắng. Có window.location.replace, đi đến một URL mới và loại bỏ trang hiện tại khỏi lịch sử, nhưng đó là để điều hướng trang đầy đủ và gần như chắc chắn sẽ phá vỡ cách thức giả mạo của jQuery.

Có thể thay đổi vị trí trong ngăn xếp lịch sử của bạn, bằng cách sử dụng window.history.go(), đưa số nguyên vào lịch sử và điều hướng đến mục nhập có liên quan. Nó không sửa đổi ngăn xếp ở tất cả, nó chỉ đặt bạn ở một nơi mới. Ngoài ra còn có các hàm back() và forward() mà chỉ cần gọi đi với -1 và 1 tương ứng. Đây có lẽ là những gì bạn đang tìm kiếm, mặc dù nó sẽ không sửa đổi ngăn xếp, chỉ cần di chuyển bạn xung quanh trong đó.

Lý tưởng nhất, bạn sẽ tìm thấy một plugin cho jQuery không duy trì lịch sử theo cách jQuery.history thực hiện, nhưng thay vào đó cung cấp trừu tượng onhashchange và thư viện của bạn sẽ chỉ phản ứng với thay đổi băm. Bằng cách đó, trình duyệt chịu trách nhiệm về lịch sử ngăn xếp và bạn sẽ không gặp phải nhiều vấn đề điên rồ mà thư viện lịch sử chó ajaxian.

+1

+1. Điều hướng Ersatz là một cơn ác mộng khả năng sử dụng. Sử dụng các nút quay lại/tiến thực. – bobince

2

lịch sử trình duyệt thường có thể truy cập một cách rất hạn chế thông qua javascript (để ngăn các trang web truy cập thông tin đó). câu trả lời ngắn - những gì bạn đang cố gắng làm là không có sẵn cho bạn thông qua jquery, theo như tôi biết.

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