Nếu OP hoặc những người khác vẫn đang tìm cách sửa đổi lịch sử trình duyệt để kích hoạt trạng thái, sử dụng PushState và thay thếState, như đề xuất của IESUS, là cách 'đúng' để thực hiện ngay bây giờ. Đó là lợi thế chính so với location.hash dường như là nó tạo ra các url thực sự, không chỉ là băm. Nếu lịch sử trình duyệt sử dụng băm được lưu, và sau đó xem lại với javascript bị vô hiệu hóa, ứng dụng sẽ không hoạt động, vì băm không được gửi đến máy chủ. Tuy nhiên, nếu PushState đã được sử dụng, toàn bộ tuyến đường sẽ được gửi đến máy chủ, sau đó bạn có thể xây dựng để đáp ứng một cách thích hợp các tuyến đường. Tôi đã thấy một ví dụ trong đó các mẫu ria mép giống nhau được sử dụng trên cả máy chủ và phía máy khách. Nếu ứng dụng khách đã bật javascript, anh ta sẽ nhận được phản hồi linh hoạt bằng cách tránh làm tròn số đến máy chủ, nhưng ứng dụng sẽ hoạt động hoàn toàn tốt nếu không có javascript. Do đó, ứng dụng có thể xuống cấp một cách duyên dáng trong trường hợp không có javascript.
Ngoài ra, tôi tin rằng có một số khung công tác ngoài kia, với một tên như history.js. Đối với các trình duyệt hỗ trợ HTML5, nó sử dụng PushState, nhưng nếu trình duyệt không hỗ trợ điều đó, nó sẽ tự động quay trở lại sử dụng băm.