Có ai biết thư viện xác định xem pushState có thể được sử dụng không?Có thể sử dụng pushState
Tôi đã sử dụng này:
if(window.history.pushState){
window.history.pushState(null, document.title, path);
}else{
location.pathname = path;
}
Nhưng tôi vừa phát hiện ra rằng có một lỗi trong Safari 5.0.2 gây ra nó không làm việc mặc dù thử nghiệm trên đi: http://support.github.com/discussions/site/2263-line-links-broken.
Tôi nghĩ rằng có thể có các gotchas khác và ai đó có thể đã tìm thấy chúng và gói chúng lên nhưng tôi chưa tìm thấy gì.
Edit: @Crescent tươi
Từ những gì tôi đã nhìn thấy nó có vẻ như pushState đẩy vào lịch sử ngăn xếp và thay đổi url nhưng không cập nhật location.pathname. Trong mã của tôi, tôi đang sử dụng setInterval để kiểm tra xem đường dẫn đã được cập nhật chưa.
var cachedPathname = location.pathname;
if(window.history.pushState){
cachedPathname = location.pathname;
setInterval(function(){
if(cachedPathname !== location.pathname){
cachedPathname = location.pathname;
//do stuff
}
}, 100);
}
Trong Safari 5.0.2 location.pathname không thay đổi khi pushState thay đổi url. Tính năng này hoạt động trên các trình duyệt và phiên bản Safari khác.
Phần nào của trang được liên kết đó cho biết thử nghiệm cho 'window.history.pushState' không hợp lệ? Có vẻ như lỗi liên quan đến một thứ gì đó cụ thể mà github đang làm ('pushState' kết hợp với việc thiết lập' location.hash', từ những gì tôi có thể thu thập). –