2010-03-01 23 views
23

Tôi đã tìm kiếm xung quanh các thư viện JQuery cho hàm băm URL, nhưng không tìm thấy gì là tốt. Có "plugin lịch sử", nhưng tất cả chúng ta đều biết là lỗi và không linh hoạt.Thư viện nào tốt nhất để thực hiện một URL băm/lịch sử trong JQuery?

Tôi đang tải các trang của mình bên trong div. Tôi sẽ cần một cách để làm lại/chuyển tiếp cùng với băm url.

mydomain.com/#home 
mydomain.com/#aboutus 
mydomain.com/#register 

Thư viện nào tốt nhất có thể xử lý tất cả những điều này?

Trả lời

25

Gần đây tôi đã xem xét 3 plugin khác nhau - jquery history plugin, historyjQuery BBQ.

Tất cả đều khó thiết lập, tôi đã làm jQuery.history hoạt động nhưng vẫn gặp sự cố với IE7. Vì vậy, tôi đã thay đổi thành BBQ và nó hoạt động tốt trên tất cả các trình duyệt mục tiêu của chúng tôi (IE6, IE7, IE8, Fx3).

Vì vậy, tôi khuyên bạn nên sử dụng plugin jQuery BBQ.

Chỉnh sửa: here's a blog post Tôi vừa viết thể hiện jQuery BBQ với trình đơn thả xuống xếp tầng.

-4

AFAIK, tất cả các plugin lịch sử làm điều tương tự:

setInterval(function() { 
    if(theHashChanged) { 
     someFunction(oldHash,newHash); 
    } 
}, 500/*whatever*/); 

Đó là khá cốt lõi của nó (trình duyệt trừ hacks để thêm các mục lịch sử mà không cần nhấp chuột vào một liên kết, vv). Nó luôn luôn bị lỗi vì nó là một chút của một hack và không có API trình duyệt chéo để xử lý thay đổi lịch sử.

Trên hết, trải nghiệm người dùng cho loại điều này không phải là rất tốt. Người dùng không hiểu khi nào họ phải nhấp vào nút quay lại 4 lần để thoát khỏi trang.

+1

-1: Không hề hữu ích. Và từ khi nào người dùng mong đợi rằng nút quay lại đưa họ ra khỏi trang? Bạn chỉ lướt các trang flash? – nikow

+1

@nikow dựa trên trải nghiệm của tôi với trang web công khai, rộng lớn. Chỉ vì bạn có thể thực hiện một cái gì đó như thế này, không có nghĩa là bạn nên. Tôi thành thật không thể nghĩ ra một trang web duy nhất mà tính năng này hữu ích hơn là gây phiền nhiễu. – noah

+1

@nikow - "từ khi nào người dùng mong đợi rằng nút quay lại đưa họ ra khỏi trang?" Vì trình duyệt web và web giới thiệu lần đầu tiên, tôi sẽ nói;). Tất nhiên, chức năng bình thường của nút quay lại là chuyển từ trang hiện tại sang trang trước. –

0

Tôi đã may mắn với reallysimplehistory (nee dhtmlHistory). Nó không phải là jQuery cụ thể, nhưng nó hoạt động trong IE, firefox và webkit, và không đòi hỏi nhiều thiết lập.

0

Có thể thử plugin Lịch sử jQuery này: http://www.balupton.com/sandbox/jquery-history/demo/ Nó cung cấp hỗ trợ trình duyệt chéo, gắn kết với băm, băm quá tải, tất cả phần còn lại.

Ngoài ra còn có một phần mở rộng Ajax cho nó, cho phép nó dễ dàng nâng cấp trang web của bạn vào một ứng dụng Ajax thích hợp: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

Đây là giải pháp được lựa chọn bởi các trang web như http://wbhomes.com.au/http://gatesonline.com.au/stage/public/

Nói chung nó là cũng tài liệu, hỗ trợ và giàu tính năng. Nó cũng giành được một câu hỏi tiền thưởng ở đây How to show Ajax requests in URL?

1

Bạn đã thử địa chỉ jQuery chưa? Từ Asual, những kẻ đã tạo ra SWFAdress. Asual - jquery Address

Plugin Địa chỉ jQuery cung cấp khả năng liên kết sâu mạnh mẽ và cho phép tạo địa chỉ ảo duy nhất có thể trỏ đến phần trang web hoặc trạng thái ứng dụng.

+0

Tôi đã thử plugin này và nó đã có vấn đề với khi sự kiện thay đổi đã được đăng ký. – Chev

1

History.js cũng được ghi lại/duy trì và hỗ trợ tất cả trình duyệt.

https://github.com/browserstate/history.js

Từ trang web:

History.js duyên dáng hỗ trợ các API/Nhà nước HTML5 History (pushState, replaceState, onPopState) trong tất cả các trình duyệt. Bao gồm tiếp tục hỗ trợ dữ liệu, tiêu đề, replaceState. Hỗ trợ jQuery, MooTools và Prototype. Đối với trình duyệt HTML5, điều này có nghĩa là bạn có thể sửa đổi URL trực tiếp mà không cần sử dụng băm nữa. Đối với trình duyệt HTML4, trình duyệt sẽ hoàn nguyên về chức năng cũ của chức năng onhashchange .

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