Tôi đã đọc tất cả các bài đăng về history.js trên stackoverflow bao gồm, this, this và this và nhìn vào source code nhưng là một người mới đến javascript/jquery, tôi gặp khó khăn trong việc tìm ra cách thực sự triển khai để có hỗ trợ lịch sử html 5 và dự phòng để hỗ trợ các trình duyệt html4 như ie8/9. Vì tôi có thể đánh giá cao lợi ích của UX khi trình bày URL nhất quán càng nhiều càng tốt, cách này giải quyết liên kết sâu và cho phép đánh dấu trang tôi muốn triển khai nhưng tôi bị mất một chút khi cố gắng thực sự sử dụng trang này trên trang web của mình.Tôi làm cách nào để sử dụng history.js trên trang web của mình
Sau khi thêm kịch bản history.js đến trang của tôi
Mã này để sửa đổi như tôi undertand nó là:
function(window,undefined){
// Prepare
var History = window.History; // Note: We are using a capital H instead of a lower h
if (!History.enabled) {
// History.js is disabled for this browser.
// This is because we can optionally choose to support HTML4 browsers or not.
return false;
}
// Bind to StateChange Event
History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
var State = History.getState(); // Note: We are using History.getState() instead of event.state
History.log(State.data, State.title, State.url);
});
// Change our States
History.pushState({state:1}, "State 1", "?state=1"); // logs {state:1}, "State 1", "?state=1"
History.pushState({state:2}, "State 2", "?state=2"); // logs {state:2}, "State 2", "?state=2"
History.replaceState({state:3}, "State 3", "?state=3"); // logs {state:3}, "State 3", "?state=3"
History.pushState(null, null, "?state=4"); // logs {}, '', "?state=4"
History.back(); // logs {state:3}, "State 3", "?state=3"
History.back(); // logs {state:1}, "State 1", "?state=1"
History.back(); // logs {}, "Home Page", "?"
History.go(2); // logs {state:3}, "State 3", "?state=3"
})(window);
Là //Change our states
nơi tất cả các mã mới diễn ra như mã này chỉ đưa ra ví dụ của điều khiển lịch sử?
Hoặc tôi có nên viết mã của riêng mình thay cho toàn bộ khối mã này không (tôi sử dụng jquery để giúp tôi vào thời điểm này, do tính mới của tôi để mã hóa).
Tôi đã đọc bài này article về tải nội dung động và cố gắng triển khai trên trang web của tôi (Tôi có thể làm mã này hoạt động nhưng tôi biết rằng nó sẽ không hoạt động tốt trong ie8/9), nhưng đang gặp sự cố khi cố gắng tìm hiểu cách kết hợp với history.js
Thứ hai, tôi đang cố gắng tìm hiểu cách history.js phát với modernizr?
có phải là một sự thay thế cho modernizr.history (nơi thực hiện thử nghiệm và nếu không có sự hỗ trợ cho .js rơi trở lại để tải trang điển hình) hoặc nó sẽ hoạt động như thế này:
if (Modernizr.history) {
//Code goes here that works if it's HTML 5 Browser with .history support? I know some HTML5 browsers deal with .history oddly (read buggy) so what happens in those cases?
} else {
//code from above goes here? with function(window, undefined){...etc... ?
}
Vâng, đó là câu hỏi của tôi, các chức năng đó hoạt động ở đâu và cách chúng sử dụng history.js. Tôi hỏi khi viết những hàm đó, tôi phải ghi nhớ điều gì, chúng sẽ đi đâu và cách chúng giao tiếp với history.js đằng sau hậu trường – pappley
Lịch sử là thứ tôi thấy được sử dụng trong các ứng dụng ajax trang đơn, ví dụ trong phần ràng buộc ở trên bạn sẽ có một cái gì đó giống như nếu state.url == này, sau đó thực hiện điều đó, khác thực thi cái gì khác. Nó cho phép bạn tải động các phần khác nhau của một ứng dụng trang đơn tùy thuộc vào URL. Nhưng tất cả điều này có thể là những thứ khá phức tạp. Và nói rằng bạn là người mới đến js/jQuery Tôi là một chút nghi ngờ bạn thậm chí cần những loại tính năng tiên tiến. Giải thích những gì bạn muốn thực hiện NẾU bạn có hỗ trợ lịch sử. – Robert
Chắc chắn. Tôi đang tạo một trang web trong đó các cấp sâu hơn chia sẻ nhiều đánh dấu phổ biến. Vì vậy, tôi muốn chỉ lấy nội dung thay đổi. (Rất nhiều điều này sẽ xảy ra trong các bảng trượt. Tôi sẽ tải nội dung ra khỏi màn hình sau đó trượt nó trên màn hình trên một sự kiện nhấp chuột). Tôi nghĩ rằng nó tạo ra trải nghiệm người dùng trực quan hơn nhiều nếu nội dung phổ biến không được tải lại liên tục. Tuy nhiên, tôi sẽ cần phải cung cấp khả năng để người dùng đánh dấu hoặc chia sẻ liên kết trang web, điều hướng bằng nút quay lại/tiến trình của trình duyệt vì đây là những thực tiễn người dùng được chấp nhận. Như tôi đã hiểu, đây chính xác là những gì history.js dành cho. – pappley